簡體   English   中英

如何在ScrollView的屏幕底部對齊TextView + RecyclerView?

[英]How to align TextView + RecyclerView at screen bottom within ScrollView?

我在Fragment中有XML文件的下一個結構。 我對RelativeLayout 3(id = referralsContainer)有問題。 它由textView(id = inviteText)+ RecyclerView(id = rv_referrals)組成。 我需要以任何分辨率在屏幕底部顯示textView。 之后,textView必須是帶有元素的RecyclerView(當用戶向下滾動時)。 我試圖在方法中做這樣的事情,當加載了recyclerview的所有元素,但是不時地將Y軸替換成recyclerview的不同位置時,我不明白如何正確地將textview放在屏幕底部。 ScrollView還剪切了幾個recyclerView項目。 有人可以幫忙嗎? 調試器中的所有位置看起來都正確。 Code + xml在圖像下方。 謝謝。

在此處輸入圖片說明

this.dataSourceListForAdapter.addAll(incomeListOfItemsFromServer);
recyclerView.setY(scrollView.getBottom() - textView.getHeight());
recyclerView.setY(coordinatorView.getBottom() - textView.getHeight());
adapter.notifyDataSetChanged();


<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.widget.SwipeRefreshLayout
    android:id="@+id/invite_friends_swipe_refresh"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <RelativeLayout
                    android:id="@+id/invite_friends_content_part"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@color/white"
                    android:visibility="visible">

                    <RelativeLayout
                        android:id="@+id/invite_friends_container"
                        android:layout_width="match_parent"
                        android:layout_height="190dp"
                        android:layout_alignParentTop="true"
                        android:background="@color/re_black_light_new">

                        <TextView
                            android:id="@+id/invite_friends_text"
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:layout_above="@+id/invite_friends_button_container"
                            android:gravity="center"
                            android:paddingEnd="40dp"
                            android:paddingStart="40dp"
                            android:textColor="@color/white"
                            android:textSize="16sp"
                            tools:text="@string/friends_invite_message" />

                        <RelativeLayout
                            android:id="@+id/invite_friends_button_container"
                            android:layout_width="match_parent"
                            android:layout_height="60dp"
                            android:layout_alignParentBottom="true">

                            <View
                                android:layout_width="match_parent"
                                android:layout_height="40dp"
                                android:layout_alignParentTop="true"
                                android:layout_marginTop="2dp"
                                android:background="@drawable/combined_shape_white" />

                            <View
                                android:layout_width="match_parent"
                                android:layout_height="20dp"
                                android:layout_alignParentBottom="true"
                                android:background="@color/white" />

                            <android.support.v7.widget.CardView
                                android:id="@+id/invite_friends_button_invite"
                                android:layout_width="147dp"
                                android:layout_height="40dp"
                                android:layout_alignParentTop="true"
                                android:layout_centerHorizontal="true"
                                android:layout_gravity="center"
                                android:layout_marginTop="10dp"
                                card_view:cardBackgroundColor="@color/white"
                                card_view:cardCornerRadius="3dp"
                                card_view:cardElevation="2dp"
                                card_view:cardPreventCornerOverlap="false"
                                card_view:cardUseCompatPadding="true">

                                <TextView
                                    android:id="@+id/invite_friends_button_invite_text"
                                    android:layout_width="match_parent"
                                    android:layout_height="match_parent"
                                    android:background="@drawable/yellow_button_selector"
                                    android:clickable="true"
                                    android:focusable="true"
                                    android:fontFamily="sans-serif-medium"
                                    android:gravity="center"
                                    android:text="@string/friends_invite"
                                    android:textAllCaps="true"
                                    android:textColor="@color/re_black_light_new"
                                    android:textSize="14sp" />

                            </android.support.v7.widget.CardView>

                        </RelativeLayout>

                    </RelativeLayout>

                    <TextView
                        android:id="@+id/copy_choice_label"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/invite_friends_container"
                        android:layout_centerHorizontal="true"
                        android:textSize="12sp"
                        android:text="@string/copy_link_text"
                        android:textColor="@color/re_gray_new" />

                    <RelativeLayout
                        android:id="@+id/invite_friends_referal_link_button"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/copy_choice_label"
                        android:layout_marginLeft="20dp"
                        android:layout_marginRight="20dp"
                        android:layout_marginTop="16dp"
                        android:background="@drawable/rectangle_gray">

                        <TextView
                            android:id="@+id/invite_friends_referal_link_text"
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:layout_centerVertical="true"
                            android:background="?attr/selectableItemBackground"
                            android:clickable="true"
                            android:focusable="true"
                            android:fontFamily="sans-serif-light"
                            android:gravity="center"
                            android:padding="7dp"
                            android:textColor="@color/re_black_light"
                            android:textSize="12sp" />

                    </RelativeLayout>

                    <RelativeLayout
                        android:id="@+id/invite_friends_full_info_container"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/invite_friends_referal_link_button"
                        android:layout_marginTop="32dp">

                        <RelativeLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginEnd="10dp"
                            android:layout_marginStart="24dp"
                            android:layout_toLeftOf="@+id/invite_friends_container_central"
                            android:gravity="center_vertical">

                            <TextView
                                android:id="@+id/invite_friends_text_friends"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:fontFamily="sans-serif-medium"
                                android:text="@string/friends_invite_friends"
                                android:textColor="@color/re_black_light_new"
                                android:textSize="12sp" />

                            <TextView
                                android:id="@+id/invite_friends_friends_count"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_below="@+id/invite_friends_text_friends"
                                android:layout_marginTop="4dp"
                                android:fontFamily="sans-serif-medium"
                                android:textColor="@color/re_black_light_new"
                                android:textSize="24sp"
                                tools:text="4" />

                            <View
                                android:id="@+id/invite_friends_divider_horizontal"
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_below="@+id/invite_friends_friends_count"
                                android:layout_marginTop="8dp"
                                android:background="@drawable/dash_horizontal_gray"
                                android:layerType="software" />

                            <TextView
                                android:id="@+id/invite_friends_text_orders"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_alignParentEnd="true"
                                android:layout_below="@+id/invite_friends_divider_horizontal"
                                android:layout_marginTop="14dp"
                                android:fontFamily="sans-serif-medium"
                                android:text="@string/friends_invite_orders"
                                android:textColor="@color/re_black_light_new"
                                android:textSize="12sp" />

                            <TextView
                                android:id="@+id/invite_friends_orders_count"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_below="@+id/invite_friends_text_orders"
                                android:layout_marginTop="4dp"
                                android:fontFamily="sans-serif-medium"
                                android:textColor="@color/re_black_light_new"
                                android:textSize="24sp"
                                tools:text="32" />

                        </RelativeLayout>

                        <View
                            android:id="@+id/invite_friends_container_central"
                            android:layout_width="1dp"
                            android:layout_height="1dp"
                            android:layout_centerInParent="true"
                            android:background="@drawable/dotted_line"
                            android:layerType="software" />

                        <RelativeLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginEnd="16dp"
                            android:layout_marginStart="10dp"
                            android:layout_toRightOf="@+id/invite_friends_container_central">

                            <TextView
                                android:id="@+id/invite_friends_income_text"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_alignParentStart="true"
                                android:layout_alignParentTop="true"
                                android:layout_marginStart="6dp"
                                android:fontFamily="sans-serif-medium"
                                android:text="@string/friends_invite_income"
                                android:textColor="@color/re_black_light_new"
                                android:textSize="12sp" />

                            <LinearLayout
                                android:id="@+id/invite_friends_income_container"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_below="@+id/invite_friends_income_text"
                                android:layout_marginTop="4dp"
                                android:orientation="horizontal">

                                <TextView
                                    android:id="@+id/invite_friends_income_count"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:layout_marginStart="6dp"
                                    android:fontFamily="sans-serif-medium"
                                    android:lines="1"
                                    android:maxLines="1"
                                    android:textColor="@color/re_black_light_new"
                                    android:textSize="24sp"
                                    tools:text="1488.77" />

                                <TextView
                                    android:id="@+id/invite_friends_income_currency"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:layout_marginStart="5dp"
                                    android:fontFamily="sans-serif-medium"
                                    android:lines="1"
                                    android:maxLines="1"
                                    android:textColor="@color/re_black_light_new"
                                    android:textSize="12sp"
                                    tools:text="руб." />

                            </LinearLayout>

                            <View
                                android:id="@+id/invite_friends_divider_horizontal_2"
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_below="@+id/invite_friends_income_container"
                                android:layout_marginEnd="16dp"
                                android:layout_marginTop="8dp"
                                android:background="@drawable/dash_horizontal_gray"
                                android:layerType="software" />

                            <TextView
                                android:id="@+id/invite_friends_text_income_pending"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_below="@+id/invite_friends_divider_horizontal_2"
                                android:layout_marginStart="6dp"
                                android:layout_marginTop="14dp"
                                android:fontFamily="sans-serif-medium"
                                android:text="@string/friends_invite_income_pending"
                                android:textColor="@color/re_black_light"
                                android:textSize="12sp" />

                            <LinearLayout
                                android:id="@+id/invite_friends_text_income_pending_container"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_below="@+id/invite_friends_text_income_pending"
                                android:layout_marginStart="6dp"
                                android:layout_marginTop="4dp"
                                android:orientation="horizontal">

                                <TextView
                                    android:id="@+id/invite_friends_text_income_pending_count"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:fontFamily="sans-serif-medium"
                                    android:textColor="@color/re_gray_new"
                                    android:textSize="24sp"
                                    tools:text="0" />

                                <TextView
                                    android:id="@+id/invite_friends_text_income_pending_count_currency"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:layout_marginStart="5dp"
                                    android:fontFamily="sans-serif-medium"
                                    android:lines="1"
                                    android:maxLines="1"
                                    android:textColor="@color/re_gray_new"
                                    android:textSize="12sp"
                                    tools:text="руб."/>

                            </LinearLayout>

                        </RelativeLayout>

                    </RelativeLayout>

                </RelativeLayout>

                <RelativeLayout
                    android:id="@+id/referralsContainer"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@id/invite_friends_content_part"
                    android:visibility="gone"
                    android:orientation="vertical">

                    <TextView
                        android:id="@+id/inviteText"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerHorizontal="true"
                        android:layout_marginTop="30dp"
                        android:fontFamily="sans-serif-medium"
                        android:text="Вы уже пригласили:"
                        android:textColor="@color/re_black_light_new"
                        android:textSize="20sp"
                        android:textStyle="normal" />

                    <ImageView
                        android:id="@+id/scrollMore"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/inviteText"
                        android:layout_centerHorizontal="true"
                        android:layout_marginBottom="6dp"
                        android:layout_marginTop="6dp"
                        android:src="@drawable/ic_scroll_more" />

                    <android.support.v7.widget.RecyclerView
                        android:id="@+id/rv_referrals"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/scrollMore"
                        android:scrollbars="vertical" />
                </RelativeLayout>

            </RelativeLayout>

            <LinearLayout
                android:id="@+id/invite_friends_error_part"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/white"
                android:gravity="center"
                android:orientation="vertical"
                android:visibility="gone">

                <ImageView
                    android:id="@+id/error_image"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="50dp"
                    android:layout_marginRight="50dp"
                    android:layout_marginTop="20dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/lost_connection_holder" />

                <TextView
                    android:id="@+id/error_text"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/error_image"
                    android:layout_marginBottom="60dp"
                    android:layout_marginTop="10dp"
                    android:gravity="center_horizontal"
                    android:paddingLeft="20dp"
                    android:paddingRight="20dp"
                    android:text="@string/no_connection_message"
                    android:textColor="@color/black_tr_38"
                    android:textSize="19sp" />

            </LinearLayout>

        </RelativeLayout>

    </ScrollView>

</android.support.v4.widget.SwipeRefreshLayout>

ScrollView不適用於與屏幕底部對齊的子子布局,因為其直接子級不知道底部在哪里。 從您的問題尚不清楚,您如何(想要)滾動底部。

如果可以拖動底部(RelativeLayout 3)進行滾動,則最好在Coordinatorlayout中使用BottomSheetBehaviour進行此布局。

如果不是,那么只需將RelativeLayout 3放在SwipeRefreshLayout下(下方)並處理ScrollView scrollChanged事件,以動畫化底部布局的滾動(如果需要),或者僅顯示/隱藏此底部布局。

不要忘記,在較小的分辨率下,與底部對齊的布局將覆蓋ScrollView的內容,並且用戶將無法滾動頂部的布局。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM