当文本溢出而不是换行时,TextView拉伸CardView

时间:2019-06-08 19:51:44

标签: java android xml

我有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",但未产生任何变化。

2 个答案:

答案 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>