android - ConstraintLayout 中的 TextView 导致父级缩小
问题描述
我在将 TextView 正确定位在 ConstraintLayout 中时遇到问题,它表示 RecyclerView 中的项目布局。
简单的项目布局包括与父星对齐的图像、小的副标题文本和titleStr
导致对齐问题的标题文本 ( )。titleStr
应该位于图像和父级之间。
<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="140dp"
android:background="@color/white"
android:elevation="4dp"
android:foreground="?android:attr/selectableItemBackground"
android:paddingStart="8dp"
android:paddingTop="16dp"
android:paddingEnd="8dp"
android:paddingBottom="16dp">
<ImageView
android:id="@+id/imageItem"
android:layout_width="120dp"
android:layout_height="match_parent"
android:src="@drawable/banner_placeholder"
app:layout_constraintStart_toStartOf="parent"
tools:background="@color/colorPrimary"/>
<com.starcut.taskupeto.common.TextViewCustom
android:id="@+id/subTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:textSize="12sp"
app:fontName="AvenirLTStd-Roman.ttf"
app:layout_constraintStart_toEndOf="@id/imageItem"
app:layout_constraintTop_toTopOf="parent"
tools:text="4h ago" />
<android.support.v7.widget.AppCompatTextView
android:id="@+id/titleStr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:textColor="@color/black"
android:textSize="14sp"
app:layout_constrainedWidth="true"
app:layout_constraintStart_toEndOf="@+id/imageItem"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/subTitle"
tools:text="Article title. This title can be big. How big you ask? Who knows?" />
如果我设置并约束layout_width
到图像的末尾,到父级的末尾,父级正在包装它的内容。
例子0dp
start
end
另一种尝试是设置layout_width
并wrap_content
使用layout_constrainedWidth="true"
. 在这种情况下,文本部分超出了它的父宽度。如果标题是短文本,则父级再次包装它。ConstraintLayout
使用的版本:1.1.3
.
解决方案
根据您的布局在0dp
(match_constraint) 情况下的行为方式,我怀疑问题出在您如何View
在onCreateViewHolder
适配器中膨胀。如果您的电话如下所示:
val itemView = LayoutInflater.from(context).inflate(R.layout.item_layout, null, false)
这意味着您没有为视图层次结构定义父级。您应该使用来自的父ViewGroup
参数onCreateViewHolder
:
val itemView = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false)
推荐阅读
- pip - Pip extras 依赖替换
- python - 使用 django-hosts 时使用的正确命名空间是什么
- asp.net - 在刷新之前已经设置了标头,并且仍然收到“发送 HTTP 标头后服务器无法设置内容类型”
- list - 如何生成特定大小的整数分区
- javascript - 使用 Javascript 更改引导主题
- python - 如何在浏览器中手动解决 reCaptcha
- java - Spring REST API 架构
- heroku - 对爱好和专业的 Heroku 定价感到困惑(标准 1x)
- javascript - 有没有办法避免在我的代码中使用 forceupdate ?
- ruby-on-rails - 猴子如何修补动作文本的表单助手以排除活动存储依赖关系?