我在 LinearLayout 中有三个 TextView,一个并排排列。但是,如果中间 TextView 中的文本变得太长,则左侧 TextView 会被推离屏幕。
我不想使用 android:weight,因为我不想为三个 TextView 之间的比率预定义一个固定值。
如何解决?
activity_main.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>
最佳答案
尝试为每个 TextView
设置 weights
这样每个 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
中,如果文本长度大于屏幕尺寸,您将防止出现不可见文本的问题。
关于android - Long TextViews 在 LinearLayout 中将元素推离屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50455980/