【问题标题】:How to know if an Android actionbar's action icon is on the top bar or the bottom bar (split)?如何知道 Android 操作栏的操作图标是在顶栏还是底栏(拆分)?
【发布时间】:2013-01-04 00:15:33
【问题描述】:

我有一个拆分操作栏,顶部栏是暗的,底部栏(拆分)是亮的。

因此,我想显示一个对比操作图标:顶部深色栏中的浅色图标和底部浅色栏中的深色图标。

问题是要知道动作应该绘制在顶部还是底部栏上。我怎么知道?

另一个选项是知道操作栏当前是否被拆分。我怎么知道?

谢谢。

【问题讨论】:

标签: android android-actionbar


【解决方案1】:

简单。您使用布尔值。默认情况下,如果屏幕宽度小于 400dp,您将拥有一个拆分的 ActionBar。因此,您可以在值文件夹中放置:

/values/bools.xml:

<resources>
    <bool name="split_action_bar">true</bool>
</resources>

并在您的 values-sw400dp 中输入以下内容。

/values-sw400dp/bools.xml:

<resources>
    <bool name="split_action_bar">false</bool>
</resources>

现在您可以根据该值设置您的图标:

boolean isActionBarSplitted = getResources().getBoolean(R.bool.split_action_bar);
if(isActionBarSplitted){
      // set light icon
}
else{
     // set dark icon
}

编辑:

其实忘了我写的,你不需要创建自己的布尔值来检查它。已经声明了一个(这是 ActionBar 用来确定它是手机设备还是平板电脑的那个)。 如果您的目标是 Android HC+,那么您可以访问默认的 ActionBars 值: android.R.bool.split_action_bar_is_narrow,如果您使用的是 ActionBarSherlock: R.bool.abs_split_action_bar_is_narrow。 找到here 为默认ActionBar,here 你的ABS。

【讨论】:

  • 谢谢。你怎么知道是 400dp?
  • 哇,太好了。可以分享一下类名和方法名吗?
  • 谢谢,但“android.R.bool”。不提供任何东西。当我输入“android.R.bool.split_action_bar_is_narrow,我得到一个编译错误。见截图:ppl.ug/uQE38Eg4ONc
  • 嗯,我不知道这不是公共 API 的一部分。我使用 ActionBarSherlock 布尔值对其进行了测试,并且确实有效。在这里试试这个:stackoverflow.com/a/8683466/1333975
  • @kilaka 如果您使用的是 ABS,您可能希望使用兼容性方法getResources_getBoolean(mActivity, R.bool.abs__split_action_bar_is_narrow);,因为此资源使用的限定符 (w480dp) 不直接被 3.2 之前的 Android 版本支持,因此,它将始终返回默认值 true。
【解决方案2】:

这取决于您使用的库。

对于新的Appcompat:检查R.bool.abc_split_action_bar_is_narrow的值:

boolean split = getResources().getBoolean(R.bool.abc_split_action_bar_is_narrow);

对于 ActionBarShelock:从库中导入 ResourcesCompat 类并调用:

boolean split = ResourcesCompat.getResources_getBoolean(this, R.bool.abs__split_action_bar_is_narrow);

如果您不使用任何库,那么您可以使用 Ahmad 的答案,但仅如果您不使用库。这是因为它们使用不同的值。如果宽度低于 400dp,android 框架似乎会拆分条形,但对于 appcompat 和 ABS,它是 480dp。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多