Mezcle texto e imágenes en TextView y agregue monitoreo de eventos de clic, y agregue eventos de respuesta de clic a ImageSpan en Textview

TextView tv = findViewById(R.id.tv);

String str = "这个一个文字图片混排,文字结尾添加图片";

SpannableString ss = new SpannableString(str + " ");
int len = ss.length();
//图片,更换成自己工程里的图片
Drawable d = ContextCompat.getDrawable(this, (R.mipmap.icon_arror_expand));
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
//构建ImageSpan
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
ss.setSpan(span, len - 1, len, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(new ClickableSpan() {
    @Override
    public void onClick(@NonNull View widget) {
        Log.e(TAG,"textView图片点击------");
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(getBaseContext(),"图片点击", Toast.LENGTH_SHORT).show();
            }
        });
    }
}, len - 1, len, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
tv.setText(ss);
//需要设置这个才能点击
tv.setMovementMethod(LinkMovementMethod.getInstance());
//去掉高亮,不然点击时候背景会变高亮
tv.setHighlightColor(getResources().getColor(android.R.color.transparent));

Aviso:

1. Los espacios se utilizan aquí para reemplazar imágenes. Por supuesto, también puede usar otros caracteres (como la ruta del archivo), siempre que la longitud no sea demasiado larga.

2. El inicio y el final de ImageSpan y ClickableSpan deben ser consistentes

3.tv.setMovementMethod(LinkMovementMethod.getInstance()); esto debe establecerse

4. Es mejor usar Spannable.SPAN_INCLUSIVE_EXCLUSIVE. Con eliminar y agregar, esto se usa mejor

5. También puede personalizar según el código fuente. Proporcione un artículo: ImageSpan personalizado de Android en el que se puede hacer clic y vista integrada en TextView: se busca programador

Referencia: Mezcle texto e imágenes en TextView y agregue monitoreo de eventos de clic, ImageSpan en Textview agrega respuesta de clic events_textview image click_yayayaiii's blog-CSDN blog

Supongo que te gusta

Origin blog.csdn.net/fromVillageCoolBoy/article/details/131131362
Recomendado
Clasificación