Android 文本视图过长会使其他视图消失

Android 文本视图过长会使其他视图消失,android,android-layout,user-interface,textview,android-linearlayout,Android,Android Layout,User Interface,Textview,Android Linearlayout,当文本视图中的文本太长时,如何阻止复选框在下面的代码中消失?我对文本视图的最大宽度硬编码不感兴趣,我想显示我的整个文本 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView

当文本视图中的文本太长时,如何阻止复选框在下面的代码中消失?我对文本视图的最大宽度硬编码不感兴趣,我想显示我的整个文本

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/tv"
                style="@style/Text"
                android:layout_weight="0"
                android:text="@string/multiple_sounds" />

            <CheckBox
                android:id="@+id/cb"
                style="@style/Text"
                android:layout_gravity="right"
                android:layout_weight="1"/>

        </LinearLayout>

styles.xml

<style name="Text">
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:padding">@dimen/margin</item>
    <item name="android:textSize">@dimen/text</item>
    <item name="android:textAlignment">center</item>
</style>

包装内容
包装内容
@二角/边距
@尺寸/文字
居中

我会使用重量。使用值
1将
android:weightSum
添加到您的
LinearLayout

对于
线性布局中的每个元素
添加权重。例如,文本视图的
0.8
,复选框的
为0.2

然后将每个元素的宽度设置为
0dp

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="1">

        <TextView
            android:id="@+id/tv"
            style="@style/Text"
            android:layout_weight="0.8"
            android:text="@string/multiple_sounds" />

        <CheckBox
            android:id="@+id/cb"
            style="@style/Text"
            android:layout_gravity="right"
            android:layout_weight="0.2"/>

    </LinearLayout>

并更新您的风格:

    <style name="Text">
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_width">0dp</item>
        <item name="android:padding">@dimen/margin</item>
        <item name="android:textSize">@dimen/text</item>
        <item name="android:textAlignment">center</item>
    </style>

包装内容
0dp
@二角/边距
@尺寸/文字
居中

我会使用重量。使用值
1将
android:weightSum
添加到您的
LinearLayout

对于
线性布局中的每个元素
添加权重。例如,文本视图的
0.8
,复选框的
为0.2

然后将每个元素的宽度设置为
0dp

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="1">

        <TextView
            android:id="@+id/tv"
            style="@style/Text"
            android:layout_weight="0.8"
            android:text="@string/multiple_sounds" />

        <CheckBox
            android:id="@+id/cb"
            style="@style/Text"
            android:layout_gravity="right"
            android:layout_weight="0.2"/>

    </LinearLayout>

并更新您的风格:

    <style name="Text">
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_width">0dp</item>
        <item name="android:padding">@dimen/margin</item>
        <item name="android:textSize">@dimen/text</item>
        <item name="android:textAlignment">center</item>
    </style>

包装内容
0dp
@二角/边距
@尺寸/文字
居中

如果您想让文本进入新行(请使用
RelativeLayout
):


另一种解决方案是使用此库来收缩文本:

如果您想让文本进入新行(使用
RelativeLayout
):


另一种解决方案是使用此库来收缩文本:

我建议使用RelativeLayout来保持UI的一致性。下面是相对布局代码示例

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2">

<TextView
    android:id="@+id/tv"
    style="@style/Text"
    android:layout_toLeftOf="@+id/cb"
    android:text="@string/multiple_sounds" />

<CheckBox
    android:id="@+id/cb"
    style="@style/Text"
    android:layout_gravity="right"
    android:layout_alignParentEnd="true"/>

</RelativeLayout>

我建议使用RelativeLayout来保持UI的一致性。下面是相对布局代码示例

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2">

<TextView
    android:id="@+id/tv"
    style="@style/Text"
    android:layout_toLeftOf="@+id/cb"
    android:text="@string/multiple_sounds" />

<CheckBox
    android:id="@+id/cb"
    style="@style/Text"
    android:layout_gravity="right"
    android:layout_alignParentEnd="true"/>

</RelativeLayout>

如果要在textview上显示大数据,我建议在父布局中使用滚动视图

如果要在textview上显示大数据,我建议在父布局中使用滚动视图


我迟到了,但我希望能帮助smn解决这个问题。具有相同问题复选框使LinearLayout无法访问TextView,复选框和TextView都需要在xml中具有此行:

android:layout_gravity="center_vertical"

我迟到了,但我希望能帮助smn解决这个问题。具有相同问题复选框使LinearLayout无法访问TextView,复选框和TextView都需要在xml中具有此行:

android:layout_gravity="center_vertical"
使用文本视图权重=1和其他视图作为换行内容,以便其他视图的大小不会随文本而改变

使用文本视图权重=1和其他视图作为换行内容,以便其他视图的大小不会根据您的文本而改变


+1当我写答案时,你读懂了我的心思:)。关键是
0dp
这就是问题所在,当然没有理由在TextView+1上使用
android:layout\u weight=“0”
,你读到了我的心思,而我在写答案:)。关键是
0dp
这就是问题所在,当然没有理由在TextView上使用
android:layout\u weight=“0”