找出android上的设备显示参数 - 选择错误的布局

时间:2012-11-11 16:37:45

标签: android-layout layout relativelayout

我的Android应用程序中有几个布局。所有布局都有一个标记,用于在运行时识别它们,使用以下代码:

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.RelativeLayout01);

if(relativeLayout.getTag() != null)
{
    Log.v("Layout", (String) relativeLayout.getTag());
}

提供以下布局:“layout”,“layout-long-port-hdpi-finger-800x480”,“layout-long-port-hdpi-finger-854x480”,“layout-normal-port-hdpi- finger-v15“,”layout-normal-port-mdpi-finger-480x320“。

当我使用Galaxy SIII仿真器时,布局布局-normal-port-hdpi-finger-v15将成为纠察队。

现在我已经从三星网站下载了Galaxy S II仿真器皮肤,据我所知,它的屏幕尺寸为480x800。然而,它不会选择layout-long-port-hdpi-finger-800x480布局,而是始终是“Layout”目录中的默认布局。

问题:如何找出设备或模拟器的显示要求,以便制作正确的布局定义?有没有办法调试/记录这些要求?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

Android在选择资源时会考虑通知栏的大小。当考虑通知栏时,Galaxy S II显示略小于800高。为了调试这个,我建议添加一个同名的values文件夹(values-long-port-hdpi-finger-800x480)。将bools.xml文件添加到该文件夹​​并将其放入其中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <bool name="your_display_size_name">true</bool>
</resources>

还要将bools.xml文件添加到与所有其他显示大小相对应的值文件夹中(或者只是覆盖屏幕旁边的所有内容的一个,您希望布尔值为真)将其放入其中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <bool name="your_display_size_name">false</bool>
</resources>

然后以实用方式获取它并将其放入日志中或按照您的喜好使用它。

boolean yourVariableName = false;
if (getResources().getBoolean(R.bool.your_display_size_name)) {
        yourVariableName = true;
}

我敢打赌,通知栏会导致您出现问题,如果没有,这应该可以帮助您进行调试。