我有2个MaterialCardViews,我希望在屏幕上共享相同的宽度,并使用带有2列的GridLayout实现了此目的,但是当MaterialCardViews中的文本开始变长时,我正努力保持宽度约束超过所需的宽度。
所需: https://imgur.com/a/BB9H4zZ
当前问题: https://imgur.com/a/gyXJxZc
这是我当前对卡片的实施方式:
<GridLayout
android:id="@+id/search_results_grid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="2"
android:useDefaultMargins="true">
<com.google.android.material.card.MaterialCardView
android:layout_columnWeight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#eaeaea"
android:lines="1"
android:text="String"
android:inputType="textMultiLine"
android:autoSizeTextType="uniform">
</TextView>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:layout_columnWeight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="String"
android:background="#eaeaea">
</TextView>
</com.google.android.material.card.MaterialCardView>
</GridLayout>
在其他stackoverflow帖子中,我尝试添加android:inputType="textMultiline"
,禁用水平滚动和android:autoSizeTextType="uniform"
,但未产生任何变化。
答案 0 :(得分:0)
使用LinearLayout
而不是GridLayout
来显示您的CardViews
,并为CardViews
赋予相同的权重,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/search_results_grid"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.card.MaterialCardView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoSizeTextType="uniform"
android:background="#eaeaea"
android:inputType="textMultiLine"
android:lines="1"
android:text="StringLongLongStringStringStringStringString"/>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoSizeTextType="uniform"
android:background="#eaeaea"
android:inputType="textMultiLine"
android:lines="1"
android:text="StringLongLongString"/>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
如果您从android:lines
中删除了TextView
标签,则下一行将出现在下一行,并且不会像现在这样前进。
答案 1 :(得分:0)
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/search_results_grid"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.card.MaterialCardView
android:id="@+id/leftCardView"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/rightCardView">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#eaeaea"
android:lines="1"
android:text="StringLongLongStringStringStringStringString"/>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/rightCardView"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toRightOf="@+id/leftCardView"
app:layout_constraintRight_toRightOf="parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#eaeaea"
android:text="String"/>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>