2013年5月2日

【Android】TextView插入Image圖片

哈囉~~~各位Android安卓的開發者大家好啊!!! ^^

今天小黑人要分享給大家的是小黑人之前碰到過的一個問題,就是不知道大家有沒有碰過需要在TextView裡面插入圖片的問題呢

小黑人碰到這個問題時一開始就想著想著TextViewImageView應該是兩塊不同的東西,如果要結合在一起的話頂多就是左邊是TextView右邊是ImageView吧,哈哈哈 XDD,但是如果是要在TextView裡的某一字串裡的某一位置裡要插入圖片,一開始小黑人的想法就想說那就把TextView拆開來寫,但後來發現真的很麻煩而且行不通,最後啦,小黑人終於發現可以在TextView裡輕輕鬆鬆放入圖片,而且圖片位置可以隨意插入,不用拆來拆去就可以實踐啦,今天小黑人就要跟大家分享,"如何在TextView裡輕鬆插入圖片"

首先當然先在xml裡的layout佈局裡加入一個TextView元件
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="@android:color/white"
/>

接下來就要在程式 (.java) 裡做插入圖片的動作囉
TextView mText = (TextView) findViewById(R.id.text);

//建立一個ImageSpan元件並帶入要插入的圖片
ImageSpan mImageSpan = new ImageSpan(MainActivity.this, R.drawable.pic);

//建立一個SpannableString元件並帶入要顯示的文字字串
SpannableString mSpannableString = new SpannableString("歡迎大家來到小黑人的Android教室,哈! "); 

//插入mImageSpan圖片,並指定在字串裡的第22個位置到23個位置進行插入 (總字串長度為23,圖片插入位置為22-23的位置)
mSpannableString.setSpan(mImageSpan, 22 , 23 , 0);  

//將組合後的文字圖片放入TextView裡
mText.setText(mSpannableString);
以上這些程式碼就可以輕鬆將圖片插入TextView裡唷,大家可以試試看 ^^
希望大家可以互相交流,如有任何問題可以跟小黑人討論唷
嘿嘿~~~謝謝大家!!! >///<

6 則留言:

  1. Dear 小黑人:
    看了你的教學,跟著做也成功了,但現在想做個應用,
    我有自定義一個ListView,裡面放了個TextView
    透過SimpleAdapter想放"圖+文"進去,可是好像不成功

    我的做法是把你的code包成一個function,然後
    透過HashMap item 存到ArrayList> list
    再把list加到SimpleAdapter adapter裡

    不知道是那個環節錯了,想跟你請教,謝謝

    回覆刪除
    回覆
    1. 您好,很抱歉這麼久才回覆您,
      根據您的提問小黑人與您解釋,
      依您的作法應該是可以的,
      藉由ArrayList取得item字串後加入image放入TextView,
      如果有錯誤的話,可能要麻煩您看錯誤訊息才能知道哪個環節有問題。

      感謝您的留言!

      刪除
  2. 小黑人老師,請教一下
    在ListView裡,可否使用spannableString呢?
    謝謝

    回覆刪除
    回覆
    1. 您好,很抱歉這麼晚才回覆您,
      根據您的提問小黑人與您解釋,
      答案是可以的,只要在ListView裡有TextView元件就可以使用,
      把SpannableString裝進TextView就可以囉。

      感謝您的提問!

      刪除
  3. 請問圖片大小還可以調嗎?

    回覆刪除
    回覆
    1. 您好,很抱歉這麼久才回覆您,
      根據您的提問小黑人與您解釋,
      ImageSpan的圖片尺寸變更小黑人還沒有實際測試過,
      但應該可以藉由getDrawable()取到圖片的Drawable後進行圖片尺寸變動。

      感謝您的提問!

      刪除

謝謝大家支持,有任何問題都可以和小黑人一起討論!