我使用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预览中。
但是在电话里
有什么问题?
在你的代码:layout_marginStart
andlayout_constraintLeft_toLeftOf
不一样,你应该使用layout_marginStart
andlayout_constraintStart_toStartOf
或layout_margintLeft
andlayout_constraintLeft_toLeftOf
,保持不变。离开和开始在一段时间内是不同的。如果你想将constraintlayout作为recyclerview,那就看得更多。 https://developer.android.google.cn/reference/android/support/constraint/ConstraintLayout.html。
当你使用
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>
与接受的答案所暗示的相反,这与链条无关。
此行为是约束布局中的错误,并在beta5中修复,因此将您的依赖项升级到com.android.support.constraint:constraint-layout:1.1.0-beta5
或更新版本。它现在已经不存在了,所以你应该使用1.1.0
。
使用以下命令更新适配器的oncreateView:
//view is what we return from onCreateViewHolder
view.apply {
this.layoutParams = RecyclerView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
})
这总是有效的。