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