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中相应位置即可。