2016-07-27 82 views
0

我有一個ListView,並且該項目是TextView。當我只使用字符串時,它工作正常。當我添加ImageSpan時,TextView佈局錯誤。 關注是我的代碼。 初始化列表視圖帶有ImageSpans的ListView中的TextView是錯誤的佈局

private void initListView() 
{ 
    SpannableString spannableString1 = replaceEmotion(this, "[Android]", 0); 
    SpannableString spannableString2 = replaceEmotion(this, "123456123456123456", 0); 
    for (int i = 0; i < 140; i++) 
    { 
     int t = (int) (Math.random() * 2); 

     if (t % 2 == 0) 
     { 
      listData.add(spannableString1); 
     } 
     else 
     { 
      listData.add(spannableString2); 
     } 
    } 
    listItemAdapter = new ArrayAdapter<>(this, R.layout.item_list, listData); 
} 

將字符串替換爲ImageSpan。

​​

enter image description here

我已經嘗試requestLayout,但它不工作。

回答

0
<LinearLayout 
    android:id="@+id/cotainer" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/text1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:visibility="visible"/> 
</LinearLayout> 

我解決它通過改變上面到下面。

<LinearLayout 
    android:id="@+id/cotainer" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/text1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:visibility="visible"/> 
</LinearLayout> 

yes.only的TextView的android:layout_width = 「match_parent」 到Android:layout_width = 「WRAP_CONTENT」

0

基地對結果的外觀上來看,我猜框架不更新的「回收的高度「TextView即使內容已經改變。實際上它不會更新TextView正在使用的Layout對象。你可以請嘗試將TextView的layout_width設置爲「wrap_content」?它將強制TextView重新計算(並重新創建)Layout對象。