Android 文本视图中的固定列

Fixed Columns in an Android Textview

我正在尝试在 android 中构建一个列表视图,但有四列都是相等的。我正在使用 android:layout_width="0dp"android:layout_weight="1",它们确实给我相等的列,直到其中一个字段的文本大于它的列分配宽度。

我一直在尝试找到一种解决方案来修复列的权重,以便额外的文本理想地移动到下一行。

这是我的列表视图布局:

<?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="match_parent"
    android:weightSum="4">

    <TextView
    android:id="@+id/txvService"
    android:layout_height="wrap_content"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:singleLine="false"/>

    <TextView
    android:id="@+id/txvScheduleDate"
    android:layout_height="wrap_content"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:singleLine="false" />

    <TextView
    android:id="@+id/txvQty"
    android:layout_height="wrap_content"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:singleLine="false" />

    <TextView
    android:id="@+id/txvBalance"
    android:layout_height="wrap_content"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:singleLine="false" />

</LinearLayout>  

如有任何想法,我们将不胜感激。

使用 LinearLayout 时,如果您有多个 child,则需要添加 orientation 属性。使用android:weightSum按比例划分屏幕space。在你的情况下它将是 android:weightSum=4

如果你添加

android:weightSum="4"
android:orientation="horizontal"

到 LinearLayout 开始标签的 height 属性下,它会导致 LinearLayout 在分配给它的 space 水平方向上分配总重量为 4 的空间。从这里开始,每个元素的权重都可以为 1,这将导致每个元素占据 space 的 1/4。您还可以使用 weight/weightSum 属性在线性布局中放置具有不同宽度的元素,即:权重为 1 和 3 的两个元素将第一个元素排列为水平 space 的 1/4,第二个元素与 3/4。