【发布时间】:2012-02-06 16:16:07
【问题描述】:
我在 Ice Cream Sandwich 中使用 Holo Dialog 主题 (@android:style/Theme.Holo.Dialog) 的活动遇到了一个奇怪的问题。
似乎他们忽略了他们的布局并填满了整个屏幕,而不是他们 XML 布局的布局宽度和高度。相同的布局在 Honeycomb 中正常工作,但在 Ice Cream Sandwich 上却没有。
示例:
正确的方法(蜂窝)
不正确的做法(冰淇淋三明治)
两台设备都运行完全相同版本的应用程序,并且使用完全相同的布局。这是有问题的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="940dp"
android:layout_height="600dp"
android:layout_margin="10dp" >
<GridView
android:id="@+id/gridView1"
android:layout_width="940dp"
android:layout_height="600dp"
android:horizontalSpacing="10dp"
android:numColumns="3"
android:smoothScrollbar="true"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" >
</GridView>
</LinearLayout>
关于如何解决这个问题的任何想法?我的基于 ICS 的 Galaxy Nexus 也出现了类似的问题,它完全忽略了高度和宽度的 match_parent 标签。 ICS 中的对话框主题是否损坏?
更新:
我做了更多的测试,似乎 894dp 或更少的宽度会产生“正确”的外观,但如果我将宽度设置为 895dp 或更大,它会是不正确的外观。模拟器的行为方式相同。这太奇怪了……
【问题讨论】:
-
这看起来很奇怪。这是在黑暗中拍摄的,但有时我会在更改构建目标后在我的应用程序中遇到奇怪的图形故障。我不知道为什么,但清理项目总会解决它们。就像我说的,在黑暗中拍摄,但可能就这么简单。
-
谢谢,刚刚又试了一次,但似乎没有任何效果。我刚刚再次更新了我的问题 - 它似乎发生在 894 到 895 dp 的宽度之间。
-
您的屏幕截图是使用两个单独的设备拍摄的吗?您的帖子假定此行为始终在 HoneyComb 上正常工作,但在 ICS 上却不能正常工作,但您遇到的问题是否可能完全取决于屏幕的大小?如果不是,那么您可以考虑创建两个屏幕尺寸完全相同的 AVD(一个运行 3.0,另一个运行 4.0)并用这两个 AVD 进行测试以确定问题是否实际上取决于 Android SDK 版本号。
-
@AlexLockwood 两个不同的设备,但它们使用完全相同的屏幕尺寸(xlarge,mdpi)。我还尝试使用 SDK 重新创建相同的 AVD,它 实际上取决于 Android 的版本。正如您在下面看到的,Android 开发团队的 Sparky 也遇到了同样的问题,而且这个问题最近受到了很多关注,所以我猜很多其他开发人员也注意到了这个错误。
-
你有想过这个吗?我在 ICS 上看到了同样的问题,但在 Jellybean 上没有,所以我认为他们现在已经修复了。但我想知道在 ICS 上是否有解决此问题的解决方法。
标签: android android-3.0-honeycomb android-4.0-ice-cream-sandwich android-dialog