Android edittext中添加图片并且监听图片的点击事件

在EditText中添加图片的主要代码

//创建ImageSpan
Bitmap b = BitmapFactory.decodeResource(getResources(),  R.drawable.ic_launcher);// 要显示的图片 
  String content = "gamedirty"; 
  ImageSpan imageSpan = new ImageSpan(this, b);
  SpannableString spannableString = new SpannableString(content);

//使用ImageSpan替换文字

spannableString.setSpan(imageSpan, 0, content.length(),
    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
在EditText中添加
EditText.append(spannableString);


设置图片点击事件的主要代码
分两种情况
第一种是该EditText已经获得了焦点
使用
et.setOnClickListener()监听

第二种是该EditText没有焦点 则在
et.setOnFocusChangedListener()中监听

监听的内容都是一致的
    Spanned s = et.getText();//得到Spanned对象

    ImageSpan[] imagespans = s.getSpans(0, s.length(),  ImageSpan.class); //得到该EditText中多有的ImageSpan对象

    int selectStart = et.getSelectionStart(); //获得当前EditText中的光标位置

//遍历所有的 ImageSpan 根据光标位置判断点击的是哪一个ImageSpan
    for (ImageSpan span : imagespans) {

     int start = s.getSpanStart(span);
     int end = s.getSpanEnd(span);
     Log.i("info", "start:" + start + ",end:" + end);
     if (selectStart >= start && selectStart <= end) {
      Toast.makeText(MainActivity.this, "点击了图片",
        Toast.LENGTH_LONG).show();
     }
    }

你可能感兴趣的:(Android实用的代码)