检查屏幕窄
问题描述:
我有一个使用requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY)
splitActionBarWhenNarrow
配置的活动。检查屏幕窄
,我需要检查,如果屏幕被认为是窄知道splitbar是可见的,因为我必须要改变一个底部部件的位置,以不与splitActionbar可见时重叠。
PD:我知道如何检查方向,但我不知道如果肖像总是等于窄
答
通过检查ActionBarSherlock来源我发现,似乎工作得很好的解决方案:在您的values
资源目录创建一个values.xml
,并添加一个新的布尔属性是这样的:
<resources>
<bool name="screen_is_narrow">true</bool>
</resources>
然后创建在values-w480dp
目录第二values.xml
:
<resources>
<bool name="screen_is_narrow">false</bool>
</resources>
如果屏幕宽于480dp,则会自动加载第二个资源。在纵向模式下您的手机屏幕比小,所以screen_is_narrow
是true
而在横向模式,并在平板电脑上也更宽,因此screen_is_narrow
成为false
。
基于这种逻辑,你可以简单地做一个检查你的活动代码现在:
boolean screenIsNarrow = getResources().getBoolean(R.bool.screen_is_narrow);
这应该做的伎俩。如果你已经在使用ActionBarSherlock,那么有一个更简单的解决方案,因为布尔已经预先定义好了。只需在代码中检查R.bool.abs__split_action_bar_is_narrow
。
可这一工作程序兼容性? – 2014-09-29 16:30:29
我不明白为什么它不应该。该逻辑独立于任何库,但使用平台功能:根据设备配置(例如屏幕大小)加载资源(xml)。布尔值用于以编程方式确定大小。但是你可以以同样的方式加载各种资源,如图形,布局,甚至颜色。 – 2014-09-30 18:09:24
重写一些AppCompat的value.xml文件会很好 – 2014-09-30 19:03:17