Recyclerview第一项开始保证金

Gab*_*eno 3 android android-layout android-recyclerview

如何tvFoo在启动片段时将第一项对齐(不将其RecyclerView放入另一个容器内)?

现在,tvFoo从左边缘和列表中的第一个项目分开16dp,只有8dp.

我想要的是滚动时水平列表在屏幕上完全可见(但在开始时它是从左边16dp).

这就是我所拥有的

这就是我要的

fragment_foo.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    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"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/tvFoo"
        style="@style/Tv.16.Black"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:text="@string/foo"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

    <TextView
        android:id="@+id/tvCount"
        style="@style/Tv.13.Gray"
        android:layout_marginStart="4dp"
        app:layout_constraintBottom_toBottomOf="@id/tvFoo"
        app:layout_constraintStart_toEndOf="@id/tvFoo"
        app:layout_constraintTop_toTopOf="@id/tvFoo"
        tools:text="(21)"/>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv"
        style="@style/WrapContent"
        android:layout_marginTop="16dp"
        app:layout_constraintTop_toBottomOf="@id/tvFoo"
        tools:layoutManager="android.support.v7.widget.GridLayoutManager"
        tools:listitem="@layout/item_foo"
        tools:orientation="horizontal"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginTop="16dp"
        android:background="@color/colorPrimaryLight"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@id/rv"/>
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

item_foo.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    style="@style/WrapContent"
    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"
    android:layout_marginStart="8dp"
    android:background="?selectableItemBackground">

    <ImageView
        android:id="@+id/ivFoo"
        android:layout_width="160dp"
        android:layout_height="90dp"
        android:background="@color/lightGray"
        android:padding="16dp"
        android:src="@drawable/ic_picture_64dp"/>
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

Yam*_*nan 15

添加填充到您的RecyclerView和使用

android:clipToPadding = "false"

在你的内部RecyclerView,在滚动时禁用填充.

<android.support.v7.widget.RecyclerView
        android:id="@+id/rv"
        style="@style/WrapContent"
        android:layout_marginTop="16dp"     
        android:padding="16dp"
        android:clipToPadding = "false"
        app:layout_constraintTop_toBottomOf="@id/tvFoo"
        tools:layoutManager="android.support.v7.widget.GridLayoutManager"
        tools:listitem="@layout/item_foo"
        tools:orientation="horizontal"/>
Run Code Online (Sandbox Code Playgroud)

  • 我总是忘记`clipToPadding`... :-D (3认同)