android - 长 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>
解决方案
尝试通过设置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
推荐阅读
- string - Python 3.6 字符串格式化
- .net-core - 无法在 Windows Server 2008 R2 中运行 dotnet core 2 控制台应用程序
- apache-spark - PySpark - 拆分字符串列并连接其中的一部分以形成新列
- javascript - NodeJS,module.export 异步属性
- git - Git合并指定提交
- c++ - 使用 C++ 和修改基类的私有/受保护属性
- asp.net - ASP.net 内部服务器错误 500.19
- algorithm - 从种子中生成随机颜色?
- haxe - haxelib run 无法启动新线程?
- r - R - 合并许多列并留下几个