WRAP_CONTENT 在 TableLayout 中不工作

WRAP_CONTENT not working in TableLayout

我正在尝试使用 TableLayout 创建 4 列显示。我已将列中的视图设置为 WRAP_CONTENT 布局宽度。然后我输入一些测试值来查看结果。它没有缩小到设备屏幕的宽度,而是扩展到设备的边界之外。这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:id="@+id/editText"
            android:text="Player" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:id="@+id/editText2"
            android:text="Player" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:id="@+id/editText3"
            android:text="Player" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:id="@+id/editText4"
            android:text="Player" />
    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/editText5"
            android:text="26" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/editText6"
            android:text="26" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/editText7"
            android:text="26" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/editText8"
            android:text="26" />
    </TableRow>

</TableLayout>

这就是我得到的。仅显示 4 列中的大约 1.5 列。

这就是我所期待的。我能得到这个的唯一方法是在布局宽度中放置特定的 dp 值。

我只想将 4 列填充到屏幕的可用宽度。有什么想法吗?

因为 android:ems="10" 在 xml TextView 属性中。

尝试 android:ems="5" 或更少

您可以使用

实现同样的效果
<TextView
    android:layout_width="0dp"
    android:layout_weight="0.25"

所有 TextView。并将 android:orientation="horizontal" 添加到 TableRow

希望对您有所帮助。