EditText插入图片,

本文详细介绍了在Android应用程序中如何在EditText组件中插入图片的步骤,通过代码实例展示了具体实现过程,适用于Android开发者进行UI交互设计和用户体验提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

activity中的代码实现时如下,

public class MainActivity extends Activity {
	private EditText editText;
	private Button button;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		editText = (EditText) this.findViewById(R.id.editText1);
		button = (Button) this.findViewById(R.id.button1);
		//根据drawable文件夹下图片的后缀名来插入图片,
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				int randomId = 1 + new Random().nextInt(5);// 数字1到9;
				Field field;
				try {
					//根据产生的1到5的随机数,来随机获得图片名称,根据名称来获得映射对象。
					field = R.drawable.class.getDeclaredField("ic_launcher"
							+ randomId);
					//获得文件名称对应的资源id。
					int resourceId = Integer.parseInt(field.get(null)
							.toString());
					Bitmap bitmap = BitmapFactory.decodeResource(
							getResources(), resourceId);
					ImageSpan imageSpan=new ImageSpan(MainActivity.this, bitmap);
					SpannableString spannableString=new SpannableString("ic_launcher");
					spannableString.setSpan(imageSpan, 0, 11, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
					editText.append(spannableString);
				} catch (NoSuchFieldException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (NumberFormatException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalArgumentException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}
		});
	}

	
}
没点击一个按钮,就会插入一个表情。spannableString.setSpan()方法,参数11是SpannableString 中的 ic_launcher的长度,表示的从多少位开始输出这个字符串。
布局文件中只有一个Edittext,和一个Button;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值