TextView和SpannableString实现图文混排的效果

来源:互联网 发布:java幂等性实现 编辑:程序博客网 时间:2024/05/15 00:44

使用SpannableString和TextView可以实现一个图文混排的效果

实现代码:

Activity_Main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.studyTextView.MainActivity" >    <TextView        android:id="@+id/textView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        /></RelativeLayout>

MainActivity.java

package com.studyTextView;import android.app.Activity;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.text.SpannableString;import android.text.Spanned;import android.text.method.LinkMovementMethod;import android.text.style.ImageSpan;import android.widget.TextView;public class MainActivity extends Activity {private TextView textView1;private SpannableString msb;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView1 = (TextView) findViewById(R.id.textView); msb = new SpannableString("\b玫瑰玫瑰"); textImage(textView1,msb); }public void textImage(TextView mtextView,SpannableString msb){  Drawable drawable = getResources().getDrawable(R.drawable.daohang); //daohang为drawable下图片名drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());msb.setSpan(new ImageSpan(drawable), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);mtextView.setText(msb);mtextView.setMovementMethod(LinkMovementMethod.getInstance());}}

drawable.getIntrinsicWidth()和<span style="font-family: Arial, Helvetica, sans-serif;">drawable.getIntrinsicHeight()获取屏幕的大小</span>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 14px;">运行结果:</span></span>

0 0