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

Ali*_*aka 5 android android-actionbar

我有一个分割动作栏,顶部栏是暗的,底部栏(分开)很轻.

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

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

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

谢谢.

Ahm*_*mad 8

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

/values/bools.xml:

<resources>
    <bool name="split_action_bar">true</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)

并在您的值-sw400dp中放入以下内容.

/values-sw400dp/bools.xml:

<resources>
    <bool name="split_action_bar">false</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:

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

  • @kilaka如果您正在使用ABS,则可能需要使用兼容性方法`getResources_getBoolean(mActivity,R.bool.abs__split_action_bar_is_narrow);`,因为此资源使用的限定符(w480dp)不受早于以下版本的Android版本的支持因此,它将始终返回默认值"true". (2认同)