表行内的TextView内容被截断

时间:2016-12-28 13:58:15

标签: android android-layout textview android-tablelayout

首先,我进行了谷歌搜索,并查看了与TextView被截断的文本相关的 StackOverFlow 问题。他们没有帮助解决手头的问题,尽管他们提供了对某些事情的更好理解。

这是我的问题。

我正在使用TableLayout来显示包含两个文本字段的记录。每行有两个TextView个单元格。所有单元格的layout_width都设置为wrap_content。但是,即使文本以多行显示,该多行文本中的每一行都会在最后被截断。

e.g。

   <?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="wrap_content">
   <TableRow>
        <TextView
            android:text="Notes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/visitation_notes" />
        <TextView
            android:text="Need to visit again. Visit till the doctor understands the importance of the Test. The problem is, it is very difficult to get appointment for the visit. Still, we need to keep trying till the point reaches to him/her."
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/visitation_notes_value"
            android:textAlignment="viewStart"/>
   </TableRow>
   </TableLayout>

制作了视图

  

Notes。需要再次访问。访问直到医生和 erstands   测试的重要性。问题是,非常困难   预约参观。不过,我们仍然需要继续努力   直到这一点到达他/她。

以粗体显示文字,切断

如果我使用LinearLayout代替TableLayout,则可以正常使用。但是,问题是我不能让每一行的第二列从相同的位置开始(没有硬编码)。

请帮助我确保TextView内容不会被切断。

以下是上面给出的screenshot视图。

4 个答案:

答案 0 :(得分:3)

这样做

<TableRow>


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Note" />

    <TextView
        android:layout_weight="3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:text="Need to visit again. Visit till the doctor understands the importance of the Test. The problem is, it is very difficult to get appointment for the visit. Still, we need to keep trying till the point reaches to him/her." />


</TableRow>

答案 1 :(得分:1)

试用此代码并适合所有设备

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/bgcolor"
android:background="#ffffff"
android:orientation="horizontal"
android:padding="10dip" >

<LinearLayout
    android:id="@+id/llAvailableBookings"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center|top"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="25dip"
        android:gravity="center"
        android:textSize="24.5sp"
        android:visibility="gone" />

    <TableLayout
        android:id="@+id/tableLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:stretchColumns="*" >

        <TableRow>

            <TextView
                android:id="@+id/visitation_notes"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="Notes" />

            <TextView
                android:id="@+id/visitation_notes_value"
                android:layout_width="1dp"
                android:layout_height="wrap_content"
                android:singleLine="false"
                android:text="Need to visit again. Visit till the doctor understands the importance of the Test. The problem is, it is very difficult to get appointment for the visit. Still, we need to keep trying till the point reaches to him/her."
                android:textAlignment="viewStart" />
        </TableRow>
    </TableLayout>
</LinearLayout>

答案 2 :(得分:1)

我在使用以下代码解决的TextView元素问题中遇到了截断的TableRow

<TableRow>

    <TextView
        android:layout_gravity="right"
        android:text="Address: "
        android:textStyle="bold"/>

    <TextView
        android:id="@+id/address"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingRight="10dp"
        android:text="123 W. Abc St., San Diego CA 90333"/>

</TableRow>

答案 3 :(得分:0)

TableRow是LinearLayout的子类/后代,因此实际上这是TableRow与它的超类不同的默认行为的问题。如果具有包含多个TextView的水平对齐的LinearLayout,则Lint会生成一条警告,以明确打开/关闭基线对齐属性。但是TableRow具有相同的歧义,没有方便的Lint警告。

因此,您看到的布局错误是由于TableRow尝试-失败-猜测您希望基线对齐行为是什么。将android:baselineAligned属性添加到每个相关的TableRow中,您的布局应正确显示。

<?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="wrap_content">
   <TableRow
        android:baselineAligned="false">
        <TextView
            android:text="Notes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/visitation_notes" />
        <TextView
            android:text="Need to visit again. Visit till the doctor understands the importance of the Test. The problem is, it is very difficult to get appointment for the visit. Still, we need to keep trying till the point reaches to him/her."
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/visitation_notes_value"
            android:textAlignment="viewStart"/>
   </TableRow>
   </TableLayout>