利用SpannableString和ImageSpan在textview中插入圖片的方法
更新時間:2017年11月22日 10:51:21 作者:泡在網上的日子
這篇文章主要為大家詳細介紹了利用SpannableString和ImageSpan在textview中插入圖片的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
默認的TextView是無法顯示圖片的。所以想要實現(xiàn)這個功能得需要我們自己為其添加一個方法。
在這里我們采用SpannableString和ImageSpan兩個類來實現(xiàn)這一功能。
先上效果圖:

main.xml布局文件。我們使用自己定義的EditText
<?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:orientation="vertical" >
<easy.stu.MyTextView
android:id="@+id/mytext"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/myButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="insert" />
</LinearLayout>
MyEditText.java
package easy.stu;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ImageSpan;
import android.util.AttributeSet;
import android.widget.EditText;
public class MyTextView extends TextView {
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void insertDrawable(int id) {
final SpannableString ss = new SpannableString("easy");
//得到drawable對象,即所要插入的圖片
Drawable d = getResources().getDrawable(id);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
//用這個drawable對象代替字符串easy
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
//包括0但是不包括"easy".length()即:4。[0,4)。值得注意的是當我們復制這個圖片的時候,實際是復制了"easy"這個字符串。
ss.setSpan(span, 0, "easy".length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
append(ss);
}
}
MyActivity.java
package easy.stu;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MyActivity extends Activity {
/** Called when the activity is first created. */
Button b;
MyEditText e;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b = (Button) findViewById(R.id.myButton);
e = (MytextView) findViewById(R.id.mytext);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
e.insertDrawable(R.drawable.easy);
}
});
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Android中的SpannableString與SpannableStringBuilder詳解
- TextView使用SpannableString設置復合文本 SpannableString實現(xiàn)TextView的鏈接效果
- Android利用SpannableString實現(xiàn)格式化微博內容
- Android SpannableString設置超鏈接、顏色、字體等屬性
- Android TextView中文字通過SpannableString設置屬性用法示例
- Android TextView使用SpannableString設置復合文本的方法詳解
- Android RichText 讓Textview輕松的支持富文本(圖像ImageSpan、點擊效果等等類似QQ微信聊天)
相關文章
在Android中使用Anntation來代替ENUM的方法
本篇文章主要介紹了在Android中使用Anntation來代替ENUM的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02
Android開發(fā)之ViewPager實現(xiàn)滑動切換頁面
這篇文章主要為大家詳細介紹了Android開發(fā)之ViewPager實現(xiàn)滑動切換頁面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-09-09
Android中使用imageviewswitcher 實現(xiàn)圖片切換輪播導航的方法
ImageSwitcher是Android中控制圖片展示效果的一個控件。本文給大家介紹Android中使用imageviewswitcher 實現(xiàn)圖片切換輪播導航的方法,需要的朋友參考下吧2016-12-12
Flutter輸入框TextField屬性及監(jiān)聽事件介紹
這篇文章主要介紹了Flutter輸入框TextField屬性及監(jiān)聽事件介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2021-11-11

