【问题标题】:ListView in Relative Layout below and above some layout not fit as wrap content in Dialog相对布局下方和上方的 ListView 某些布局不适合作为对话框中的包装内容
【发布时间】:2015-11-23 07:39:29
【问题描述】:

我对对话框中的 ListView 有一个问题

在相对布局中,我在顶部有一个布局(Title-alignParentTop),在底部有另一个布局(Dismiss and Done button-alignParentBottom),ListView 在 Dissmiss and Done Button 上方和标题下方。 ListView 可以包含一个、两个或多个项目,现在根据 ListView 项目,我的对话框高度已相应设置,但它在 listview 的最后一项和底栏之间保持空间(当列表中有一个和两个项目时)

三个或更多的项目看起来不错

这个问题有什么解决办法吗?

下面列出了我的 xml 文件。

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:orientation="vertical"
android:paddingBottom="20dp"
android:paddingTop="20dp">
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:orientation="vertical"
    android:paddingTop="10dp">
    <LinearLayout
        android:id="@+id/linear_middle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:gravity="center"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="@dimen/menuLstPad"
            android:text="@string/lbl_rate_order"
            android:textColor="@color/black"
            android:textSize="20sp" />
        <View
            android:layout_width="wrap_content"
            android:layout_height="0.5dp"
            android:layout_marginTop="10dp"
            android:background="#DBDBDB" />
    </LinearLayout>
    <ListView
        android:id="@+id/lv_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/ll_bottom"
        android:layout_below="@+id/linear_middle"
        android:descendantFocusability="beforeDescendants">
    </ListView>
    <LinearLayout
        android:id="@+id/ll_bottom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:gravity="bottom"
        android:orientation="vertical"
        android:padding="10dp">
        <View
            android:layout_width="wrap_content"
            android:layout_height="0.5dp"
            android:layout_marginTop="10dp"
            android:background="#DBDBDB" />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/txt_dismiss"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:padding="10dp"
                android:text="DISMISS"
                android:textColor="#242424"
                android:textSize="18sp"
                android:textStyle="bold" />
            <TextView
                android:id="@+id/txt_done"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:padding="10dp"
                android:text="DONE"
                android:textColor="#242424"
                android:textSize="18sp"
                android:textStyle="bold" />
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>
</LinearLayout>

【问题讨论】:

    标签: android android-listview android-alertdialog


    【解决方案1】:

    由于您正在使用相对布局并分配底部栏android:layout_alignParentBottom="true",这使得相对布局随着屏幕尺寸可用而展开。 RelativeLayout 如果您在其底部对齐任何内容,则忽略所有边界。 对于上述布局,您必须删除相对布局并开始使用 LinearLayout,因为您的所有视图都是垂直顺序的。

    【讨论】:

    • 但我的要求是顶栏(标题)和底栏应该在 Dialog 中,但对话框高度应该根据 listview 项目呈现,如果我采取线性布局 Dismiss and Done Button 去ListView 结束,但始终不显示在底部
    【解决方案2】:

    使用这个布局

    <?xml version="1.0" encoding="UTF-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/root"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/transparent"
        android:orientation="vertical"
        android:paddingBottom="20dp"
        android:paddingTop="20dp" >
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:padding="@dimen/menuLstPad"
            android:text="@string/lbl_rate_order"
            android:textColor="@color/black"
            android:textSize="20sp" />
    
        <View
            android:layout_width="wrap_content"
            android:layout_height="0.5dp"
            android:layout_marginTop="10dp"
            android:background="#DBDBDB" />
    
        <ListView
            android:id="@+id/lv_data"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@+id/ll_bottom"
            android:layout_below="@+id/linear_middle"
            android:layout_weight="1"
            android:descendantFocusability="beforeDescendants" />
    
        <LinearLayout
            android:id="@+id/ll_bottom"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:gravity="bottom"
            android:orientation="vertical"
            android:padding="10dp" >
    
            <View
                android:layout_width="wrap_content"
                android:layout_height="0.5dp"
                android:layout_marginTop="10dp"
                android:background="#DBDBDB" />
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >
    
                <TextView
                    android:id="@+id/txt_dismiss"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:padding="10dp"
                    android:text="DISMISS"
                    android:textColor="#242424"
                    android:textSize="18sp"
                    android:textStyle="bold" />
    
                <TextView
                    android:id="@+id/txt_done"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:padding="10dp"
                    android:text="DONE"
                    android:textColor="#242424"
                    android:textSize="18sp"
                    android:textStyle="bold" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
    

    【讨论】:

    • @Sorry,它不能满足我的要求,因为我需要 Dismiss 和 Done 按钮,因为始终在顶部栏(标题)和底部栏(关闭和完成按钮)之间显示底部和 ListView
    • 你试过那个布局了吗,这正是你需要的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多