0

我的应用程序中有一个自定义对话框,它来自Activity并使用RelativeLayout,所有定位和属性都由 XML 文件处理,而代码中没有。我的布局完全符合我的要求,但由于对话框中某些项目的长度,一些信息行会换行到下一行。这不是问题,除了对话框中的关闭按钮在这些情况下看起来像是有人坐在上面。

这是来自模拟器的屏幕截图,显示按钮很好,但我希望在描述文本的右侧有一些填充,因此它不会与对话框的右侧对接:

好的按钮,但需要右边距

看到这一点,我添加android:layout_marginRight="5dp"到布局文件中,希望得到我的边距,这似乎是 - 我得到了我的包装 - 但按钮不正确。对话框的高度在我期望的时候没有改变,因为描述现在换行了。

包装很好,但按钮被压扁

这是我的完整布局 XML。这是我第一次使用RelativeLayout,所以希望这是我忽略的简单内容。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
        <ImageView
                android:id="@+id/achievement_icon"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                android:layout_marginLeft="7dp"
                android:contentDescription="@string/achievement_icon" />
        <TextView
                android:id="@+id/achievement_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="5dp"
                android:textColor="#ffffff"
                android:textStyle="bold"
                android:layout_toRightOf="@+id/achievement_icon" />
        <TextView
                android:id="@+id/achievement_gamerscore"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#ffffff"
                android:textStyle="bold"
                android:layout_marginLeft="5dp"
                android:layout_below="@+id/achievement_name"
                android:layout_toRightOf="@+id/achievement_icon" />
        <TextView
                android:id="@+id/achievement_description"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="7dp"
                android:layout_marginRight="5dp"
                android:layout_alignLeft="@+id/achievement_icon"
                android:layout_below="@+id/achievement_icon" />
        <TextView
                android:id="@+id/achievement_earned"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="7dp"
                android:layout_marginRight="5dp"
                android:layout_alignLeft="@+id/achievement_description"
                android:layout_below="@+id/achievement_description" />
        <Button
                android:id="@+id/cancel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="7dp"
                android:layout_centerHorizontal="true"
                android:text="@string/button_close"
                android:layout_below="@+id/achievement_earned" />
    </RelativeLayout>
4

1 回答 1

0

问题是您的按钮空间不足。

为按钮腾出空间:

1.)您可以移动按钮,也许是右上角并将其显示为 x。

2.)您可以限制描述 TextView 的大小,并通过在滚动视图中包围 TextView 将其设置为垂直滚动(更简洁的方法也不需要 ScrollView,但您明白我的意思。

3.) 使按钮的高度变小。

此外,我会警惕应用程序手机在具有不同屏幕分辨率/密度的手机上的外观。所以在设计UI时请注意这一点。

我的意思的例子是:

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:scrollbars="vertical"
    android:fillViewport="true">

     <TextView
            android:id="@+id/achievement_description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="7dp"
            android:layout_marginRight="5dp"
            android:layout_alignLeft="@+id/achievement_icon"
            android:layout_below="@+id/achievement_icon" />

</ScrollView>

但是,您需要将“achievement_description”文本视图的高度限制为某个值,而不是包装内容。

于 2012-05-06T17:38:59.893 回答