ListView中的Android文本被截断

时间:2011-10-10 00:10:31

标签: android listview layout textview android-linearlayout

我知道在论坛上有很多这样的问题,但很多情况都是独一无二的,所以这里就是这样。

我有一个自定义列表视图,它根据应用程序主题以不同方式显示“事件”。标题,alt文本和标签的文本都被截断(无论高度设置为什么)。你能帮我解决一下这个问题吗?

文本在我的3个主题中的两个中被切断,并且仅在实际设备上(不是模拟器)。

每个列表项的代码非常相似,所以我只在下面添加一个(如果需要,将附加其他列表项);感谢。

<?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:attr/listPreferredItemHeight -->
<LinearLayout android:id="@+id/viewrow_flags"
    android:orientation="vertical" android:layout_width="36px"
    android:layout_height="80px" android:layout_marginRight="6dip">
</LinearLayout>
<LinearLayout android:orientation="vertical"
    android:layout_width="0dip" android:layout_weight="1"
    android:layout_height="fill_parent">
    <TextView android:id="@+id/viewrow_toptext"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:singleLine="true" android:layout_weight="1" android:gravity="center_vertical"
        android:textColor="#00ccFF" android:textSize="6pt" android:paddingBottom="1dip"/>
    <TextView android:layout_width="fill_parent" android:gravity="center_vertical"
        android:layout_height="fill_parent" android:layout_weight="1"
        android:id="@+id/viewrow_bottomtext" android:textColor="#0066FF"
        android:singleLine="true" android:textSize="6pt" android:paddingBottom="1dip"/>
    <TextView android:layout_width="fill_parent" android:gravity="center_vertical"
        android:layout_height="fill_parent" android:layout_weight="1"
        android:id="@+id/viewrow_tagtext" android:textColor="#0066FF"
        android:singleLine="true" android:textSize="6pt" android:paddingBottom="1dip"/>
</LinearLayout>
<View android:id="@+id/viewrow_anchor" android:layout_width="0sp"
    android:layout_height="60dip" android:layout_gravity="center" />
<TextView android:id="@+id/viewrow_dayview"
    android:layout_width="60sp" android:layout_height="80px"
    android:gravity="center" android:paddingLeft="6dip"
    android:paddingTop="12dip" />
</LinearLayout>

5 个答案:

答案 0 :(得分:2)

您将TextViews定义为带有android:singleLine =“true”的单行。因此,如果文本对于空间来说太大,它将被裁剪。将TextViews设置为允许包装发短信并扩展其高度或者您可以使用android:ellipsize =“marquee”属性在单行上显示文本。

答案 1 :(得分:2)

我发现了问题,它是布局权重和整体视图列表项高度的混合。

        <LinearLayout android:orientation="vertical"
            android:layout_width="0dip" 
            android:layout_weight="1"
            android:layout_height="fill_parent">
-               <TextView android:id="@+id/viewrow_toptext" 
                          android:layout_weight="1"
+               <TextView android:id="@+id/viewrow_toptext"
                          android:layout_width="fill_parent"                              
                          android:layout_height="fill_parent"
-                         android:singleLine="true" 
                          android:ellipsize="end" 
                          android:gravity="center_vertical"
+                         android:singleLine="true" 
                          android:layout_weight="1" 
                          android:gravity="center_vertical"
                          android:textColor="#00ccFF" 
                          android:textSize="6pt" 
                          android:paddingBottom="1dip"/>
-               <TextView android:layout_width="fill_parent"
-                         android:ellipsize="end"
+               <TextView android:layout_width="fill_parent"     
                          android:gravity="center_vertical"
                          android:layout_height="fill_parent" 
                          android:layout_weight="1"
                          android:id="@+id/viewrow_bottomtext" 
                          android:textColor="#0066FF"
                          android:singleLine="true" 
                          android:textSize="6pt" 
                          android:paddingBottom="1dip"/>
-               <TextView android:layout_width="fill_parent"
-                         android:ellipsize="end"
+               <TextView android:layout_width="fill_parent" 
                          android:gravity="center_vertical"
                          android:layout_height="fill_parent" 
                          android:layout_weight="1"
                          android:id="@+id/viewrow_tagtext" 
                          android:textColor="#0066FF"
                          android:singleLine="true" 
                          android:textSize="6pt" 
                          android:paddingBottom="1dip"/>
    </LinearLayout>
                <View android:id="@+id/viewrow_anchor" 
                      android:layout_width="0sp"
-                     android:layout_height="70dip" 
                      android:layout_gravity="center" />
+                     android:layout_height="60dip" 
                      android:layout_gravity="center" />
    <TextView android:id="@+id/viewrow_dayview"
              android:layout_width="60sp" 
              android:layout_height="80px"
              android:gravity="center" 
              android:paddingLeft="6dip"

答案 2 :(得分:1)

android:layout_weight="1"添加到被截断的人

答案 3 :(得分:0)

让我在android:layout_gravity="center_vertical"工作中设置TextView

请参阅https://stackoverflow.com/a/11246243/3681880

答案 4 :(得分:0)

只需更改layout_height =&#34; fill_parent&#34; in linear to wrap_content

<LinearLayout android:orientation="vertical"
    android:layout_width="0dip" android:layout_weight="1"
    android:layout_height="fill_parent">
    <TextView android:id="@+id/viewrow_toptext"