Button实现图文混排
一、简介
本文介绍两种图文混排方式
1、android:drawableTop="@drawable/star"实现文字上有图片
当然有上下左右等等
2、SpannableString的ImageSpan实现图文混排
二、代码实例
效果图:

一二三四是用的第一种方式
下面的用的第二种方式
代码:
fry.Activity02
1 package fry;
2
3 import com.example.buttonDemo1.R;
4
5 import android.app.Activity;
6 import android.graphics.BitmapFactory;
7 import android.os.Bundle;
8 import android.text.Spannable;
9 import android.text.SpannableString;
10 import android.text.style.ImageSpan;
11 import android.view.MotionEvent;
12 import android.view.View;
13 import android.view.View.OnClickListener;
14 import android.view.View.OnFocusChangeListener;
15 import android.view.View.OnTouchListener;
16 import android.widget.Button;
17
18 public class Activity02 extends Activity {
19 private Button btn_big;
20 @Override
21 protected void onCreate(Bundle savedInstanceState) {
22 // TODO Auto-generated method stub
23 super.onCreate(savedInstanceState);
24 setContentView(R.layout.activity02);
25 btn_big=(Button) findViewById(R.id.btn_big);
26
27 //SpannableString的ImageSpan添加左边图片
28 SpannableString spannableString1=new SpannableString("left");
29 ImageSpan imageSpan=new ImageSpan(this, BitmapFactory.decodeResource(getResources(), R.drawable.image_left));
30 spannableString1.setSpan(imageSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
31
32 //SpannableString的ImageSpan添加右边图片
33 SpannableString spannableString2=new SpannableString("right");
34 ImageSpan imageSpan2=new ImageSpan(this, BitmapFactory.decodeResource(getResources(), R.drawable.image_right));
35 spannableString2.setSpan(imageSpan2, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
36
37 btn_big.append(spannableString1);
38 btn_big.append("我的按钮");
39 btn_big.append(spannableString2);
40 }
41 }
/buttonDemo1/res/layout/activity02.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical" >
6
7 <LinearLayout
8 android:layout_width="match_parent"
9 android:layout_height="wrap_content"
10 android:orientation="horizontal"
11 >
12
13 <!--android:drawableTop="@drawable/star"实现文字上有图片 -->
14 <Button
15 android:layout_width="wrap_content"
16 android:layout_height="wrap_content"
17 android:text="一"
18 android:drawableTop="@drawable/star"
19 />
20
21 <!--android:drawablePadding="30dp实现文字和文字上的图片中间有30dp的空隙 -->
22 <Button
23 android:layout_width="wrap_content"
24 android:layout_height="wrap_content"
25 android:text="二"
26 android:drawableTop="@drawable/star"
27 android:drawablePadding="30dp"
28 />
29
30 <Button
31 android:layout_width="wrap_content"
32 android:layout_height="wrap_content"
33 android:text="三"
34 android:drawableRight="@drawable/star"
35 />
36
37 <Button
38 android:layout_width="wrap_content"
39 android:layout_height="wrap_content"
40 android:text="四"
41 android:drawableLeft="@drawable/star"
42 />
43 </LinearLayout>
44
45 <Button
46 android:id="@+id/btn_big"
47 android:layout_width="180dp"
48 android:layout_height="200dp"
49
50 />
51
52 </LinearLayout>