EditText的用法基本与TextView相似。可参照上篇博文:https://blog.csdn.net/lpcrazyboy/article/details/80666659
这里面比较有意思的一个功能:动态向EditText中添加表情等图标。(类似于QQ聊天中添加表情的功能)
效果图如下:
xml布局文件的里放一个EditText即可。很简单,就不上代码了。
MainActivity.java中的代码如下:
package com.deepreality.edittextdemo; import android.graphics.drawable.Drawable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.Spannable; import android.text.SpannableString; import android.text.style.ImageSpan; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { private Button btnAddImage; private EditText etWithImage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnAddImage = findViewById(R.id.main_btnAddImage); etWithImage = findViewById(R.id.main_etWithImage); btnAddImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SpannableString spanStr = new SpannableString("image"); Drawable drawable = MainActivity.this.getResources().getDrawable(R.drawable.fav); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE); spanStr.setSpan(span,0,5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); int curse = etWithImage.getSelectionStart(); etWithImage.getText().insert(curse, spanStr); } }); } }
思路:主要还是用到了SpannableString富文本。
1、定义一个SpannableString对象。
2、定义一个Drawable对象。(其中,setBounds()是设置Drawable对象的大小)
3、根据获取到的Drawable对象来定义一个ImageSpan对象。
4、然后,将ImageSpan对象替换SpannableString中的"image"即可。
5、最后,获取一下光标位置并将替换后的SpannableString对象插入到相应的EditText中相应位置即可。