安卓开发中EditText的常见用法(总结)

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

猜你喜欢

转载自blog.csdn.net/lpcrazyboy/article/details/80667377