首页 > 解决方案 > 长 TextViews 在 LinearLayout 中将元素推离屏幕

问题描述

我在一个 LinearLayout 中有三个 TextViews 并排排列。但是,如果中间 TextView 中的文本变得太长,则左侧 TextView 会被推离屏幕。

不想使用 android:weight 因为我不想为三个 TextView 之间的比率预定义一个固定值。

如何解决?

活动主.xml:

<?xml version="1.0" encoding="utf-8"?>

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

    <TextView
        android:id="@+id/item_left"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:text="LEFT"
        android:gravity="center"
        android:layout_gravity="left|center_vertical" />

    <TextView
        android:id="@+id/item_middle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#aaaaaa"
        android:text="This is a very very long text which is so long that it wraps but unfortunatelly also pushes the TextView with ID item_right off the screen."
        android:layout_gravity="left|center_vertical" />

    <TextView
        android:id="@+id/item_right"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="RIGHT"
        android:gravity="center"
        android:layout_gravity="right|center_vertical" />

</LinearLayout>

标签: android

解决方案


尝试通过设置weights每个TextView这样的方式每个TextView将有自己的空间,LinearLayout而不是推动TextView屏幕文本的右侧将换行,例如:

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

<TextView
    android:id="@+id/item_left"
    android:layout_width="0dp"
    android:layout_height="40dp"
    android:layout_weight="1"
    android:text="LEFT"
    android:gravity="center"
    android:layout_gravity="left|center_vertical" />

<TextView
    android:id="@+id/item_middle"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="#aaaaaa"
    android:text="This is a very very long text which is so long that it wraps but unfortunatelly also pushes the TextView with ID item_right off the screen."
    android:layout_gravity="left|center_vertical" />

<TextView
    android:id="@+id/item_right"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="RIGHT"
    android:gravity="center"
    android:layout_gravity="right|center_vertical" />

  </LinearLayout>

您不需要给每个TextView相等的空间,例如,您可以给中间TextView更多的空间操作weights,例如: 如果文本长度大于屏幕大小,则将android:layout_weight="2"所有内容包裹起来将防止出现不可见文本。ScrollView


推荐阅读