【发布时间】:2017-09-01 10:44:34
【问题描述】:
问题
在我的Activity 中,我初始化了一个Fragment,其中包含一个RecyclerView。但我已经认识到它没有显示所有项目。这意味着它只显示 11 个项目,而不是 14 个。此外,最后一个可见项目(编号 12)被切断
我的实现
Activity 包含一个空的FrameLayout,充当Fragment 容器:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res./android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#e0e0e0">
<LinearLayout
android:id="@+id/layout_footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@drawable/layout_border_white"
android:paddingBottom="@dimen/footer_padding">
<include layout="@layout/footer"></include>
</LinearLayout>
<FrameLayout
android:id="@+id/fragment_start"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/layout_footer"/>
</RelativeLayout>
这是 Fragment 中的 RecyclerView:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#e0e0e0"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout_header"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:padding="@dimen/startpage_padding"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<include layout="@layout/header"></include>
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/startpage_margin"
android:scrollbars="vertical"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/layout_header"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ProgressBar
android:id="@+id/pb_loading_indicator"
android:layout_width="@dimen/startpage_progressbar"
android:layout_height="@dimen/startpage_progressbar"
android:visibility="invisible"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_error_message_display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:padding="@dimen/startpage_text_padding"
android:text="@string/error_message"
android:textSize="@dimen/startpage_text"
android:visibility="invisible"/>
</LinearLayout>
解决方法
我已经在RecyclerView 中使用match_parent 进行了尝试,并且还在其中添加了paddingBottom。使用 paddingBottom="30dp" 可以看到另外一个元素,但这不是一个好的解决方案。此外,我的Activity 使用的是在Manifest 中设置的AlertDialog-Theme。删除它显示相同的结果。
任何帮助将不胜感激。
【问题讨论】:
-
把
android:layout_above="@id/layout_footer"改成android:layout_above="@+id/layout_footer"还有你为什么用app:layout_constraintTop_toBottomOf="@+id/layout_header"换成RecyclerView -
感谢您的提示,但这并没有帮助。我使用
app:layout_constraintTop_toBottomOf="@+id/layout_header"进行定位,因为RecyclerView在ConstraintLayout内。 -
RecyclerView的父视图是什么?
-
@ojonugwaochalifu 我编辑了我的帖子。
-
实际上你使用了不正确的约束布局
标签: android android-fragments android-recyclerview