0

我的 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” ", "布局-正常端口-mdpi-finger-480x320"。

当我使用 Galaxy SIII 模拟器时,布局 layout-normal-port-hdpi-finger-v15 将被纠察。

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

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

感谢您的帮助

4

1 回答 1

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;
}

我敢打赌通知栏是导致您出现问题的原因,如果不是,这应该可以帮助您调试。

于 2012-11-15T04:39:34.760 回答