2016-07-27 85 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对象。