太长的TextView使其他视图消失

时间:2016-10-17 17:23:27

标签: android android-layout user-interface textview android-linearlayout

当TextView中的文字太长时,如何阻止复选框在下面的代码中消失?我对TextView的硬编码max_width不感兴趣,我想显示我的整个文本。

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

6 个答案:

答案 0 :(得分:2)

我会用体重。将LinearLayout添加到1,其值为LinearLayout 对于0.8添加重量的每个元素。例如,Checkbox表示textview,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>

更新你的风格:

{{1}}

答案 1 :(得分:0)

  

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

答案 2 :(得分:0)

对此我来晚了,但希望对这个问题有所帮助。同样的问题,checkBox使得TextView对于LinearLayout无法访问,checkBox和textView都需要在xml中包含以下行:

android:layout_gravity="center_vertical"

答案 3 :(得分:0)

使用文本视图的权重= 1,将其他视图用作wrap_content,以使其他视图的大小不会根据您的文本改变

 <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=""
        android:text="@string/multiple_sounds" />

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

</LinearLayout>

答案 4 :(得分:-1)

如果您希望文字换行(使用RelativeLayout):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<CheckBox
    android:id="@+id/checkBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true" />

<TextView
    android:id="@+id/textView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toStartOf="@id/checkbox" />

</RelativeLayout> 

另一个解决方案是使用此lib来缩小文本: https://github.com/grantland/android-autofittextview

答案 5 :(得分:-1)

我建议使用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>