android TextView没有换行符

时间:2014-05-28 14:25:31

标签: android android-layout android-tablelayout

我有一个带有一些表行的TableView。其中一个是这个(我在表中有2个这样的结构):

        <TableRow
            android:id="@+id/trTimeSettingEndTime"
            android:gravity="center_vertical"
            android:paddingTop="10dp"
            android:paddingBottom="3dp">

            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="35dp"
                android:layout_height="35dp"
                android:paddingRight="10dp"
                android:src="@android:drawable/ic_menu_recent_history" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="16dp"
                android:text="Start Time" />

            <TextView
                android:id="@+id/tvTimeSettingEndTime"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="22dp"
                android:text="00:00"
                android:textColor="@color/dark_gray" />
        </TableRow>

图像尺寸合适。中间的textview取出所有可用空间,右侧textview宽度是它的内容。

我不明白为什么中间的textview占用了所有的空间?

第二,当我从代码中更改tvTimeSettingEndTime textview时,它会稍微长一点,然后文本会打破一行而不是调整它的宽度。

有人可以解释为什么占据大部分空间的中间位置?

如何根据我从代码中输入的文字调整第三行的宽度?

由于

1 个答案:

答案 0 :(得分:2)

听起来你希望第一列是静态宽度(已经工作),第三列是内容的宽度(wrap_content),第二列是填充可用空间。如果是这样,请尝试使用第二列的权重+ 0dp宽度和第3列的wrap_content。

    <TableRow
        android:id="@+id/trTimeSettingEndTime"
        android:gravity="center_vertical"
        android:paddingTop="10dp"
        android:paddingBottom="3dp">

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:paddingRight="10dp"
            android:src="@android:drawable/ic_menu_recent_history" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="0dp"
            android:weight="1"
            android:layout_height="wrap_content"
            android:textSize="16dp"
            android:text="Start Time" />

        <TextView
            android:id="@+id/tvTimeSettingEndTime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="22dp"
            android:text="00:00"
            android:textColor="@color/dark_gray" />
    </TableRow>

如果您希望第2个和第3个宽度相等,请将它们设置为weight = 1和width = 0dp。

另外请记住,TableLayout会强制每行的列宽度相同,如果您要查找每行的列大小,请尝试使用两个水平LinearLayouts。