2011-10-10 133 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"