在下面显示另一个视图时按下recyclerView

时间:2017-06-21 11:13:37

标签: android android-recyclerview

我有这样的布局:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/default_background">

<LinearLayout
    android:layout_above="@+id/text_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include
        layout="@layout/toolbar"/>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@id/text_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:drawablePadding="10dp"
    android:layout_gravity="center"
    android:background="@drawable/color_transparent"
    android:layout_alignParentBottom="true"
    android:textStyle="bold"
    android:visibility="gone"
    android:padding="15dp"
    android:gravity="center"/>

现在当发生某些事情时,我想简单地通过textviewrecyclerView下面隐藏setVisibility(),然后再次隐藏它。当textview出现时,上面的LinearLayout必须为了给它留出一些空间,导致在屏幕底部隐藏一些回收者的内容。现在我的问题是有没有一种方法来代替隐藏底部,它向下滚动一点,隐藏顶部相同的空间,并在屏幕的前一个底部下方显示textview。 提前谢谢?

2 个答案:

答案 0 :(得分:0)

稍微修改你的布局

    <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/default_background">



        <include
            layout="@layout/toolbar"
            android:id = "@+id/toolbar"
            android:layout_alignParentTop = "true"/>
       <ScrollView
            android:id="@+id/scroll_view"
            android:layout_below="@id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <LinearLayout
             android:layout_above="@+id/text_view"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:orientation="vertical">

                  <android.support.v7.widget.RecyclerView
                   android:id="@+id/recycler"
                   android:scrollbars="vertical"
                   android:layout_width="match_parent"
                   android:layout_height="match_parent"/>

                 <TextView
                  xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@id/text_view"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:drawablePadding="10dp"
                  android:layout_gravity="center"
                  android:background="@drawable/color_transparent"
                  android:textStyle="bold"
                  android:visibility="gone"
                  android:padding="15dp"
                  android:gravity="center"/>
         </LinearLayout>
    </ScrollView>
</RelativeLayout>

现在在您的活动文件中执行此操作

//when you want to show your textView suppose on a button click write this snippet
 bottomText.setVisibility(View.VISIBLE);
 scrollView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
         @Override
         public void onGlobalLayout() {
         scrollView.post(new Runnable() {
                public void run() {
                scrollView.fullScroll(View.FOCUS_DOWN);
                }
         });
     }
});

这会将您带到页面底部并自动滚动视图。 希望能帮助到你。

答案 1 :(得分:0)

试试这个:

<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/main_layout"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="@color/default_background">

<TextView
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/text_view"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:drawablePadding="10dp"
   android:layout_gravity="center"
   android:background="@drawable/color_transparent"
   android:layout_alignParentBottom="true"
   android:textStyle="bold"
   android:visibility="gone"
   android:padding="15dp"
   android:gravity="center"/>

<LinearLayout
android:id="@+id/linear"
android:layout_above="@id/text_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<include
    layout="@layout/toolbar"/>

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler"
    android:scrollbars="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

</LinearLayout>

 </RelativeLayout>

问题是你的布局找不到textview的id,因为它声明在Linear Layout下面。因此,将TextView放在线性布局上方,然后将android:layout_above="@+id/text_view"属性赋予线性布局。

注意:通过@ + id而不是@id为widget添加id。 见Difference between "@id/" and "@+id/" in Android