相对布局内的列表视图和滚动视图不覆盖屏幕

Posted

技术标签:

【中文标题】相对布局内的列表视图和滚动视图不覆盖屏幕【英文标题】:List View inside relative layout and scroll view not covering screen 【发布时间】:2018-05-29 12:28:28 【问题描述】:

我有以下布局

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_
android:layout_>

<!-- The main content view -->
<FrameLayout
    android:id="@+id/content_frame"
    android:layout_
    android:layout_ >

    <RelativeLayout
        android:layout_
        android:layout_
        android:background="@color/searchScreenBG">

        <RelativeLayout
            android:id="@+id/title_bar"
            android:layout_
            android:layout_
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginBottom="@dimen/_7sdp">

            <ImageButton
                android:id="@+id/ib_hamburger"
                android:layout_
                android:layout_
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:layout_marginEnd="@dimen/_16sdp"
                android:layout_marginRight="@dimen/_16sdp"
                android:layout_marginTop="@dimen/_15sdp"
                android:background="@android:color/transparent"
                android:contentDescription="@null"
                app:srcCompat="@drawable/ham_burger" />

            <com.rod.com.rod.ui.views.CTextView
                android:id="@+id/textView"
                android:layout_
                android:layout_
                android:layout_alignBottom="@+id/ib_hamburger"
                android:layout_centerHorizontal="true"
                android:text="@string/basic_details"
                android:textColor="@color/colorGreen" />

            <ImageButton
                android:id="@+id/ib_back"
                android:layout_
                android:layout_
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignTop="@+id/ib_hamburger"
                android:layout_marginLeft="@dimen/_16sdp"
                android:layout_marginStart="@dimen/_16sdp"
                android:background="@android:color/transparent"
                android:contentDescription="@null"
                app:srcCompat="@drawable/left_arrow" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/reg_no_layout"
            android:layout_
            android:layout_
            android:layout_marginTop="@dimen/_5sdp"
            android:layout_below="@+id/title_bar"
            android:background="@color/colorWhite">

            <TextView
                android:id="@+id/tv_reg_no"
                android:layout_
                android:layout_
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="19dp"
                android:textColor="@color/colorLightGrey" />
        </RelativeLayout>

        <ScrollView
            android:layout_
            android:layout_
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/reg_no_layout"
            >
            <LinearLayout android:layout_
                android:layout_
                android:gravity="center"
                android:orientation="vertical"
                android:layout_marginRight="@dimen/_10sdp"
                android:layout_marginLeft="@dimen/_10sdp"
                android:layout_weight="1">

                <RelativeLayout
                    android:id="@+id/basic_details"
                    android:layout_
                    android:layout_
                    android:layout_marginTop="@dimen/_10sdp"
                    android:background="@drawable/list_item_bg"
                    android:paddingBottom="@dimen/_10sdp">

                    <TextView
                        android:id="@+id/tv_district_label"
                        android:layout_
                        android:layout_
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"
                        android:layout_alignParentTop="true"
                        android:layout_marginLeft="50dp"
                        android:layout_marginStart="50dp"
                        android:layout_marginTop="11dp"
                        android:text="@string/district"
                        android:textColor="@color/colorBlack"
                        android:textSize="@dimen/_13sdp" />

                    <TextView
                        android:id="@+id/tv_district"
                        android:layout_
                        android:layout_
                        android:layout_alignLeft="@+id/tv_district_label"
                        android:layout_alignStart="@+id/tv_district_label"
                        android:layout_below="@+id/tv_district_label"
                        android:text="TextView"
                        android:textColor="@color/colorLightGrey" />

                    <TextView
                        android:id="@+id/tv_tehsil_label"
                        android:layout_
                        android:layout_
                        android:layout_above="@+id/tv_district"
                        android:layout_alignParentEnd="true"
                        android:layout_alignParentRight="true"
                        android:layout_marginEnd="75dp"
                        android:layout_marginRight="75dp"
                        android:text="@string/tehsil"
                        android:textColor="@color/colorBlack" />

                    <TextView
                        android:id="@+id/tv_tehsil"
                        android:layout_
                        android:layout_
                        android:layout_alignBottom="@+id/tv_district"
                        android:layout_alignLeft="@+id/tv_tehsil_label"
                        android:layout_alignStart="@+id/tv_tehsil_label"
                        android:text="TextView"
                        android:textColor="@color/colorLightGrey" />

                    <TextView
                        android:id="@+id/tv_date_label"
                        android:layout_
                        android:layout_
                        android:layout_alignLeft="@+id/tv_district"
                        android:layout_alignStart="@+id/tv_district"
                        android:layout_below="@+id/tv_district"
                        android:layout_marginTop="13dp"
                        android:text="@string/date"
                        android:textColor="@color/colorBlack" />

                    <TextView
                        android:id="@+id/tv_date"
                        android:layout_
                        android:layout_
                        android:layout_alignLeft="@+id/tv_date_label"
                        android:layout_alignStart="@+id/tv_date_label"
                        android:layout_below="@+id/tv_date_label"
                        android:text="TextView"
                        android:textColor="@color/colorLightGrey" />

                    <TextView
                        android:id="@+id/tv_jild_no_label"
                        android:layout_
                        android:layout_
                        android:layout_alignBottom="@+id/tv_date_label"
                        android:layout_alignLeft="@+id/tv_tehsil"
                        android:layout_alignStart="@+id/tv_tehsil"
                        android:text="@string/jild_no"
                        android:textColor="@color/colorBlack" />

                    <TextView
                        android:id="@+id/tv_jild_no"
                        android:layout_
                        android:layout_
                        android:layout_alignLeft="@+id/tv_jild_no_label"
                        android:layout_alignStart="@+id/tv_jild_no_label"
                        android:layout_below="@+id/tv_jild_no_label"
                        android:text="TextView"
                        android:textColor="@color/colorLightGrey" />

                    <TextView
                        android:id="@+id/tv_party_label"
                        android:layout_
                        android:layout_
                        android:layout_alignLeft="@+id/tv_date"
                        android:layout_alignStart="@+id/tv_date"
                        android:layout_below="@+id/tv_date"
                        android:layout_marginTop="13dp"
                        android:text="@string/party"
                        android:textColor="@color/colorBlack" />

                    <TextView
                        android:id="@+id/tv_party"
                        android:layout_
                        android:layout_
                        android:layout_alignLeft="@+id/tv_party_label"
                        android:layout_alignStart="@+id/tv_party_label"
                        android:layout_below="@+id/tv_party_label"
                        android:text="TextView"
                        android:textColor="@color/colorLightGrey" />

                </RelativeLayout>

                <RelativeLayout
                    android:layout_
                    android:layout_
                    android:layout_weight="1"
                    android:layout_below="@+id/basic_details"
                    android:layout_marginTop="13dp"
                    android:background="@drawable/list_item_bg">

                    <TextView
                        android:id="@+id/tv_member_details_label"
                        android:layout_
                        android:layout_
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"
                        android:layout_alignParentTop="true"
                        android:layout_marginLeft="@dimen/_40sdp"
                        android:layout_marginStart="@dimen/_40sdp"
                        android:layout_marginTop="14dp"
                        android:text="@string/member_details"
                        android:textColor="@color/colorBlack"
                        android:textSize="@dimen/_16sdp" />

                    <ListView
                        android:id="@+id/lv_members"
                        android:layout_
                        android:layout_
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"
                        android:layout_below="@+id/tv_member_details_label"
                        android:layout_marginLeft="@dimen/_40sdp"
                        android:layout_marginRight="@dimen/_40sdp"
                        android:layout_marginStart="@dimen/_40sdp"
                        android:layout_marginTop="16dp"
                        android:divider="@color/colorLightGrey"
                        android:dividerHeight="@dimen/_1sdp" />
                </RelativeLayout>
            </LinearLayout>

        </ScrollView>

    </RelativeLayout>

</FrameLayout>

我想让 basic_layout 下面的相对布局覆盖整个其余屏幕。我怎样才能做到这一点。搜索后我发现我应该在我的滚动视图中放置一个线性布局,然后应该添加相对布局。但这无济于事。 我想要如下的层次结构:

----RelativeLayout
-------TitleBar
-------TextView
-------ScrollView (rest of screen)
----------RelativeLayout (upper portion of scroll view)
------------TextViews
----------RelativeLayout (rest of scrol view)
-------------TextView
-------------ListView

有什么帮助吗?

【问题讨论】:

你为什么要让一切都成为框架布局的子元素? 你想达到什么样的布局,你可以分享一个屏幕截图吗? @AryanRaj 因为我还必须集成一个抽屉 @Umair 请检查我编辑的问题 @Naila 好的,现在有几个问题。为什么要使用抽屉布局作为父布局,其次还要在上部滚动列表视图和文本视图? 【参考方案1】:

实际上,问题在于您在 scrollview 中使用了 2 个布局,因此 listview 不会自行滚动,它也会限制列表高度。要解决这个问题,您需要将修复值传递给您的listview,然后它将完全显示在指定的高度内。而其余的布局,如果你想得到你在图片中显示的完全一样,你需要使用cardview。

  <RelativeLayout
                    android:layout_
                    android:layout_
                    android:layout_weight="1"
                    android:layout_below="@+id/basic_details"
                    android:layout_marginTop="13dp"
                    android:layout_marginBottom="10dp"
                    android:background="@drawable/list_item_bg">

                    <TextView
                        android:id="@+id/tv_member_details_label"
                        android:layout_
                        android:layout_
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"
                        android:layout_alignParentTop="true"
                        android:layout_marginLeft="@dimen/_40sdp"
                        android:layout_marginStart="@dimen/_40sdp"
                        android:layout_marginTop="14dp"
                        android:text="@string/member_details"
                        android:textColor="@color/colorBlack"
                        android:textSize="16dp" />

                    <ListView
                        android:id="@+id/lv_members"
                        android:layout_
                        android:layout_
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"
                        android:layout_below="@+id/tv_member_details_label"
                        android:layout_marginLeft="@dimen/_40sdp"
                        android:layout_marginRight="@dimen/_40sdp"
                        android:layout_marginStart="@dimen/_40sdp"
                        android:layout_marginTop="16dp"
                        android:divider="@color/colorLightGrey"
                        android:dividerHeight="@dimen/_1sdp" />
                </RelativeLayout>

【讨论】:

以上是关于相对布局内的列表视图和滚动视图不覆盖屏幕的主要内容,如果未能解决你的问题,请参考以下文章

列表视图滚动时在屏幕底部隐藏线性布局

Android:禁用列表视图内的元素滚动

颤动中滚动视图内的Listview

滚动视图内的约束

是否可以使滚动视图不覆盖整个屏幕?

滚动视图内的约束布局,总是参考线高度变化