如何知道Android操作栏的操作图标是在顶栏还是在底栏(拆分)?

时间:2013-01-04 00:15:33

标签: android android-actionbar

我有一个分割操作栏,其中顶栏是暗的,底栏(分开)很轻。

因此,我想展示一个对比动作图标:顶部暗条中的灯光图标和底部灯条中的黑色图标。

问题在于知道是否应该在顶部或底部条上绘制动作。我怎么知道?

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

感谢。

2 个答案:

答案 0 :(得分:8)

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

<强> /values/bools.xml:

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

并在您的值-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作为默认操作栏,here为您的ABS。

答案 1 :(得分:0)

这取决于您使用的库。

对于新的 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);

如果您不使用任何图书馆,那么您可以使用艾哈迈德的答案,但如果您不使用图书馆,则只能 。这是因为它们使用不同的值。如果宽度低于400dp,android框架似乎会分割条形图,但对于appcompat和ABS,它是480dp。