首先,我进行了谷歌搜索,并查看了与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视图。
答案 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>