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

5
我有一个分割操作栏,其中顶部栏为深色,底部栏(分割部分)为浅色。
因此,我希望展示对比的操作图标:在深色顶部栏中使用浅色图标,在浅色底部栏中使用深色图标。
问题是如何确定哪些操作应该放置在顶部或底部栏。如何获知这个信息?
另一种选择是了解操作栏是否当前已分割。如何获得这个信息?
谢谢。

由于溢出图标的存在,使用对比条进行分割会有一定难度。操作图标可以更改,但溢出图标无法更改。请参见问题:http://stackoverflow.com/questions/13934825/how-to-change-the-overflow-button-when-in-cab - AlikElzin-kilaka
2个回答

8
简单来说,您可以使用布尔值。如果屏幕宽度小于400dp,则默认情况下会出现分割ActionBar。因此,在您的values文件夹中,您可以放置以下内容:
/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。 在此处找到默认ActionBar,在此处找到ABS。


1
谢谢。您是如何知道它是400dp的呢? - AlikElzin-kilaka
哇,太棒了。你能分享一下类和方法的名称吗? - AlikElzin-kilaka
我找到了一些东西。看起来 split_action_bar_is_narrow 是内部的:com.android.internal.R.bool.split_action_bar_is_narrow。是个死胡同吗? - AlikElzin-kilaka
1
哦,我不知道这不是公共API的一部分。我使用ActionBarSherlock布尔值进行了测试,它确实有效。在这里尝试一下:https://dev59.com/12oy5IYBdhLWcg3wPbqd#8683466 - Ahmad
2
如果您正在使用ABS,您可能希望使用兼容性方法getResources_getBoolean(mActivity, R.bool.abs__split_action_bar_is_narrow),因为此资源使用的限定符(w480dp)不被Android 3.2之前的旧版本直接支持,因此它将始终返回默认值true - mdelolmo
显示剩余3条评论

0

这取决于你正在使用的库。

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

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

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

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

如果您不使用任何库,则可以使用Ahmad的答案,但仅当您不使用库时。这是因为它们使用不同的值。Android框架似乎会在宽度低于400dp时拆分栏,但对于appcompat和ABS而言,它是480dp。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接