检查屏幕窄

问题描述:

我有一个使用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_narrowtrue而在横向模式,并在平板电脑上也更宽,因此screen_is_narrow成为false

基于这种逻辑,你可以简单地做一个检查你的活动代码现在:

boolean screenIsNarrow = getResources().getBoolean(R.bool.screen_is_narrow); 

这应该做的伎俩。如果你已经在使用ActionBarSherlock,那么有一个更简单的解决方案,因为布尔已经预先定义好了。只需在代码中检查R.bool.abs__split_action_bar_is_narrow

+0

可这一工作程序兼容性? – 2014-09-29 16:30:29

+0

我不明白为什么它不应该。该逻辑独立于任何库,但使用平台功能:根据设备配置(例如屏幕大小)加载资源(xml)。布尔值用于以编程方式确定大小。但是你可以以同样的方式加载各种资源,如图形,布局,甚至颜色。 – 2014-09-30 18:09:24

+0

重写一些AppCompat的value.xml文件会很好 – 2014-09-30 19:03:17