我的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”目录中的默认布局。
问题:如何找出设备或模拟器的显示要求,以便制作正确的布局定义?有没有办法调试/记录这些要求?
感谢您的帮助
答案 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;
}
我敢打赌,通知栏会导致您出现问题,如果没有,这应该可以帮助您进行调试。