2011-10-10 106 views
2

我知道在论坛上有很多像这样的问题,但许多情况都是独特的,所以在这里。ListView中的Android文本被截断

我有一个自定义列表视图,基于应用程序主题以不同的方式显示“事件”。标题,alt-text和标签的文本全部被切断(不管高度如何设置)。你能帮我解决这个问题吗?

文本在我的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> 

回答

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

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

+0

是什么这两个变量之间的区别?我在android文档中查了一下,它说椭圆大小通常用于android:singleLine。 – Blaskovicz

+0

是的,ellipsize是单行。将裁剪w /结束点或android:ellipsize =“marquee”将滚动文字从左到右像一个选取框。如果你有房间,尽管使用多线。更好的UI – SBerg413

+0

设置这个属性并没有解决问题 - 我猜它有一些文字视图和他们的布局高度/权重。 – Blaskovicz

1

添加android:layout_weight="1"那些谁是切断

+0

我想我试着给这三个textviews使用相同的layout_weight,但它们仍然在我的实际设备上被切断。我稍后会确认。 – Blaskovicz

+0

我试图设置所有的内部文本视图具有相同的权重,但这并没有解决问题。 – Blaskovicz

0

只是改变layout_height = “FILL_PARENT” 线性到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"