在Button任意位置加图片效果

来源:互联网 发布:北京网络职业学院窦店 编辑:程序博客网 时间:2024/04/28 14:56
通常情况会想到drawableLeft,drawableTop,drawableRight,drawableBotton,这样是可以做,但只能在四个位置。 
下面这种办法可以实现任意位置: 
Java代码  收藏代码
  1. import android.app.Activity;  
  2. import android.graphics.drawable.Drawable;  
  3. import android.os.Bundle;  
  4. import android.text.Html;  
  5. import android.text.Spanned;  
  6. import android.text.Html.ImageGetter;  
  7. import android.widget.Button;  
  8.   
  9. public class demobutton extends Activity {  
  10.     /** Called when the activity is first created. */  
  11.     @Override  
  12.     public void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.main);  
  15.           
  16.                 ImageGetter imgGetter = new Html.ImageGetter() {  
  17.                         @Override  
  18.                         public Drawable getDrawable(String source) {  
  19.                                 Drawable drawable = null;  
  20.                                 drawable = demobutton.this.getResources().getDrawable(  
  21.                                                 Integer.parseInt(source));  
  22.                                 drawable.setBounds(00, drawable.getIntrinsicWidth(),  
  23.                                                 drawable.getIntrinsicHeight());  
  24.                                 return drawable;  
  25.                         }  
  26.                 };  
  27.                   
  28.                 Button btn = (Button) findViewById(R.id.button1);  
  29.                 StringBuffer sb = new StringBuffer();  
  30.                 sb.append("<img src=\"").append(R.drawable.button1).append("\"/>").append("<font color=\"6f6f6f\">按钮上加图片效果</font>");;  
  31.                 Spanned span = Html.fromHtml(sb.toString(), imgGetter, null);  
  32.                 btn.setText(span);  
  33.                 sb = null;  
  34.     }  
  35. }  


 

采用Spanned也不是什么新鲜事了,呵呵。这里只提供一种思路。不止Button,任意可以显示文字的View都可以这样做。
0 0