5

我不知道为什么,但布局在带有 Api 11+ 的设备上显示得很好,不适合较旧的设备。

这是xml:

    <LinearLayout
        android:id="@+id/workers_linearlayout"
        android:layout_width="50dp"
        android:layout_height="70dp"
        android:layout_weight="1" >

        <RelativeLayout
            android:id="@+id/workers_relative_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center" >

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:src="@drawable/workers_small" />

            <ImageView
                android:id="@+id/imageView3"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_centerInParent="true"
                android:scaleX="0.5"
                android:scaleY="0.5"
                android:src="@drawable/ic_cerchio_rosso"
                android:translationX="25dp"
                android:translationY="-20dp" />

            <TextView
                android:id="@+id/workers_number"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:text="9"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:translationX="25dp"
                android:translationY="-20dp" />
        </RelativeLayout>
    </LinearLayout>

这是 API 11+ 上的结果:

API11+

这在 API 10-上:

API 10-

我试着用布局来修复它,我可以获得一个很好的结果,但从来没有像第一个那样。

有人能帮我吗?

编辑:

设备上的照片:

在此处输入图像描述

编辑2

三角警告是:

  • 字符串“9”应该使用字符串资源
  • ImageView1 和 3:缺少内容描述属性
  • RelativeLayout 或者它的父级可能没用
  • 嵌套权重不利于性能

顺便说一句,我认为这些都不能解决我的问题

4

2 回答 2

2

行。我修好了它。使用布局并遵循 NikkyD 关于“父母中心”功能的建议,我遵循了以下政策:

无法使用比例和平移属性,因为较旧的 API(可能)无法识别它们。所以,我删除了平移和缩放选项,并通过为 IV3 (30dpx30dp) 设置固定的高度和宽度来缩放图像。现在尺寸是正确的,但是如果我为 IV3 和 TextView 调用“对齐父顶部”和“对齐父右”,它们的位置很好,但 TextView 没有定位在 IV3 的中心。就像这样:

号码位置错误

为了修复它,我在“workersRelativeLayout”中添加了一个新的相对布局,并将 IV3 和 TextView 放入其中,并为每个布局设置“父级中心”为 TRUE。然后,我设置了一个新的相对布局“对齐父顶部”和“对齐父右”。这是最终结果:

右号码位置

这是新的 xml 布局:

            <LinearLayout
                android:id="@+id/workers_linearlayout"
                android:layout_width="50dp"
                android:layout_height="70dp"
                android:layout_weight="1" >

                <RelativeLayout
                    android:id="@+id/workers_relative_layout"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:gravity="center" >

                    <ImageView
                        android:id="@+id/imageView1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:src="@drawable/workers_small" />

                    <RelativeLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_alignParentTop="true" >

                        <ImageView
                            android:id="@+id/imageView3"
                            android:layout_width="30dp"
                            android:layout_height="30dp"
                            android:layout_centerInParent="true"
                            android:src="@drawable/ic_cerchio_rosso" />


                        <TextView
                            android:id="@+id/workers_number"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_centerInParent="true"
                            android:text="9"
                            android:textAppearance="?android:attr/textAppearanceMedium" />

                    </RelativeLayout>
                </RelativeLayout>
            </LinearLayout>

希望这可以帮助某人:)

编辑

注意父宽度大小。如果您将权重的父级设置为 1,则大小自然会根据显示大小而动态变化。图像始终位于中心父级,IV3 和 TextView 的相对布局将始终位于顶部|右侧。因此,如果父宽度大小增加,图像居中和新的相对布局之间的距离也会增加,并且可能会发生如下情况:

在此处输入图像描述

于 2012-10-27T14:48:16.307 回答
0

第一个 LinearLayout 有一个权重。如果它有一个权重,那么它需要将一个维度设置为 0dp,这将是它按其权重缩放的维度。

相对布局的所有 3 个元素都具有“centeredinparent”为真。父级是 RelLayout。

IV3 有一个 match_parent 的高度,所以它会被拉伸到 rel-layout 的高度。我很确定这会覆盖您的比例 0.5 选项。

我不太确定,但我猜想 rel-layout centeredinparent 也会覆盖翻译。

带有选项的布局非常难看。有些被认为优于其他人,它们不会生效。我玩了相当多的时间与相对布局并发现,在我的情况下,我只能用“下面”而不是“上面”来排列它们,因为由于某种原因,上面的定位不起作用(即使在 eclipse 预览中也不行) !!)但是xml绝对没有问题。

所以我猜你的一些选项会否决其他选项,这会影响到更现代的 API,因为它们可能更具限制性(或者更破碎,它仍然是 android ;))

于 2012-10-27T11:11:28.743 回答