0

私は を持ってListViewおり、アイテムはTextViewです。文字列のみを使用するとうまく機能します。TextView追加するとレイアウトが間違っていImageSpanます。フォローは私のコードです。リストビューを開始する

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 に置き換えます。

    public SpannableString replaceEmotion(Context context, String content, int length)
    {
        if (length < 0)
        {
            length = 0;
        }
        SpannableString result = new SpannableString(content);
        if (context == null || content == null)
        {
           return null;
        }
        int start = length;
        int end;
        while ((start = content.indexOf("[", start)) != -1 && (end = content.indexOf("]", start)) != -1)
        {
            String img = content.substring(start, end + 1);
            if ("[Android]".equals(img))
            {
                Drawable drawable = context.getResources().getDrawable(R.mipmap.ic_launcher);
                if (drawable != null)
                {
                   drawable.setBounds(0, 0, (int) context.getResources().getDimension(R.dimen.fab_margin) * 3,
                                            (int) context.getResources().getDimension(R.dimen.fab_margin) * 3);
                   ImageSpan span = new ImageSpan(drawable);
                   result.setSpan(span, start, end + 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
                 }
            }  
            start++;
         }
      return result;
  }

ここに画像の説明を入力

レイアウトをリクエストしようとしましたが、うまくいきません。

4

2 に答える 2

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>

はい。TextView android:layout_width="match_parent" から android:layout_width="wrap_content" のみ

于 2016-08-02T06:30:29.073 に答える