我正在尝试实现以下布局。我要以占据整个屏幕宽度的方式放置项目:
实际布局:
这是我的Recyclerview项目的代码:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="@dimen/size_8dp"
android:paddingStart="@dimen/size_20dp"
android:paddingEnd="@dimen/size_20dp"
android:paddingBottom="@dimen/size_8dp">
<ImageView
android:id="@+id/legendsItemIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@+id/text_legend_status_name"
/>
<TextView
android:id="@+id/text_legend_status_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Low"
android:textSize="@dimen/text_size_8sp"
app:layout_constraintTop_toBottomOf="@+id/legendsItemIcon"
app:layout_constraintStart_toStartOf="@+id/legendsItemIcon"
app:layout_constraintEnd_toEndOf="@+id/legendsItemIcon"
app:layout_constraintBottom_toBottomOf="parent"
android:textColor="@color/legends_item_status_text_color"
android:layout_marginTop="@dimen/size_4dp"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
我该如何实现?
答案 0 :(得分:1)
此自定义类将帮助您https://gist.github.com/heinrichreimer/39f9d2f9023a184d96f8
D.Independent
将RecyclerView layoutManager设置为SpanningLinearLayoutManager而不是LinearLayoutManager
答案 1 :(得分:1)
如果我理解正确,则需要水平的回收站视图。 因此,将您的布局管理器设置如下:
LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
linearLayoutManager.setOrientation(RecyclerView.HORIZONTAL);
recyclerView.setLayoutManager(mHorizontalLayoutManager);
如果您的商品超过了屏幕尺寸,它将可以滚动
答案 2 :(得分:0)
您只需使用GridLayoutManager而不是LinearLayoutManager
/**
* Creates a vertical GridLayoutManager
*
* @param context Current context, will be used to access resources.
* @param spanCount The number of columns in the grid
*/
public GridLayoutManager(Context context, int spanCount) {
super(context);
setSpanCount(spanCount);
}
答案 3 :(得分:0)
如果你想让 Recyclerview 包裹它的内容(全高度拉伸包裹它的内容)。只需用 NestedScrollView 包装它。我测试了它的工作。
<androidx.core.widget.NestedScrollView
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="wrap_content"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<!-- This Recyclerview will fit content.
So it become full height stretch wrap its content-->
<RecyclerView
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Bayar SPP"
style="@style/FontStyleSubtitle"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/recyclerView" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>