ConstraintLayout作为RecyclerView项目

问题描述 投票:5回答:4

我使用ConstraintLayout作为RecyclerView项目。但是现在有一些问题显示在真机上并且在预览中不一样

recyclerView项目布局如下:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/foreground_item_undo"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:orientation="horizontal"
    app:layout_constraintWidth_default="spread">

    <com.lsl.wordhelper.view.RoundBgTextView
        android:id="@+id/tv_item_icon"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_marginStart="8dp"
        android:gravity="center"
        android:padding="4dp"
        android:text="G"
        android:textColor="@android:color/white"
        android:textSize="30sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/tv_item_explain"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="释义:"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="@id/tv_item_original"
        app:layout_constraintTop_toTopOf="parent" />


    <TextView
        android:id="@+id/tv_item_original"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:text="Good"
        android:textColor="@android:color/black"
        android:textSize="24sp"
        app:layout_constraintBottom_toTopOf="@id/tv_item_explain"
        app:layout_constraintLeft_toRightOf="@id/tv_item_icon"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/tv_item_translate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="很好"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="@id/tv_item_original"
        app:layout_constraintTop_toBottomOf="@id/tv_item_explain" />

    <TextView
        android:id="@+id/tv_item_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:gravity="right"
        android:text="2018/01/19"
        android:textColor="@color/text_color_date"
        app:layout_constraintBottom_toBottomOf="@id/tv_item_original"
        app:layout_constraintRight_toRightOf="parent" />
</android.support.constraint.ConstraintLayout>

在Android Studio预览中。

但是在电话里

有什么问题?

android android-recyclerview
4个回答
-4
投票

在你的代码:layout_marginStartandlayout_constraintLeft_toLeftOf不一样,你应该使用layout_marginStartandlayout_constraintStart_toStartOflayout_margintLeftandlayout_constraintLeft_toLeftOf,保持不变。离开和开始在一段时间内是不同的。如果你想将constraintlayout作为recyclerview,那就看得更多。 https://developer.android.google.cn/reference/android/support/constraint/ConstraintLayout.html


0
投票

当你使用

app:layout_constraintBottom_toTopOf="@id/tv_item_explain"
app:layout_constraintLeft_toRightOf="@id/tv_item_icon"

如果在当前视图下创建了@id/tv_item_explain,则会导致错误。

你可以添加@id/tv_item_explain

app:layout_constraintBottom_toTopOf="@+id/tv_item_explain"
app:layout_constraintLeft_toRightOf="@+id/tv_item_icon"

你可以这样试试。

<?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"
    android:id="@+id/foreground_item_undo"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    android:orientation="horizontal"
    app:layout_constraintWidth_default="spread">

<com.lsl.wordhelper.view.RoundBgTextView
    android:id="@+id/tv_item_icon"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_marginStart="8dp"
    android:gravity="center"
    android:padding="4dp"
    android:text="G"
    android:textColor="@android:color/white"
    android:textSize="30sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

<TextView
    android:id="@+id/tv_item_explain"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="释义:"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="@+id/tv_item_original"
    app:layout_constraintTop_toTopOf="parent"/>


<TextView
    android:id="@+id/tv_item_original"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:text="Good"
    android:textColor="@android:color/black"
    android:textSize="24sp"
    app:layout_constraintBottom_toTopOf="@+id/tv_item_explain"
    app:layout_constraintLeft_toRightOf="@+id/tv_item_icon"
    app:layout_constraintTop_toTopOf="parent"/>

<TextView
    android:id="@+id/tv_item_translate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="很好"
    android:textColor="@android:color/black"
    android:textSize="16sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="@id/tv_item_original"
    app:layout_constraintTop_toBottomOf="@id/tv_item_explain"/>

<TextView
    android:id="@+id/tv_item_date"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="16dp"
    android:gravity="right"
    android:text="2018/01/19"
    android:textColor="@color/colorPrimaryDark"
    app:layout_constraintBottom_toBottomOf="@id/tv_item_original"
    app:layout_constraintRight_toRightOf="parent"/>
</android.support.constraint.ConstraintLayout>

0
投票

与接受的答案所暗示的相反,这与链条无关。

此行为是约束布局中的错误,并在beta5中修复,因此将您的依赖项升级到com.android.support.constraint:constraint-layout:1.1.0-beta5或更新版本。它现在已经不存在了,所以你应该使用1.1.0


0
投票

使用以下命令更新适配器的oncreateView:

//view is what we return from onCreateViewHolder
view.apply {
            this.layoutParams = RecyclerView.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT
           )
         })

这总是有效的。

© www.soinside.com 2019 - 2024. All rights reserved.