android基本控件中,有很多控件继承自TextView,可以说这是个基础中的基础控件。

在TextView中要实现图文混排,最简单的方法,就是在布局配置文件中,当设置好了TextView的文字内容之后,设置TextView的一个属性android:drawableleft。这个属性设置的值为图片的路径(@drawable/图片名称||android:drawableLeft="@drawable/ic_launcher"),设置完成后,将把指定的drawable文件夹下相应的图片画在文字内容的左边。当然,既然有android:drawableleft自然应该有drawableRight等。这种是最简单实现图文混排的方法。

其次,我们可以动态的给TextView设置他的现实内容。(textView1.setText(Html.fromHtml("中国你好

美国你好

日本你好这里是图文混排",null,null));)。

通过setText方法,我们可以动态设置内容。但是,在内部需要使用Html.fromHtml方法。这个方法返回的是一个字符集,里面的内容我们能够使用HTML进行编排。不过如果只单纯的在里面通过标签来设置图片,那么在程序里,将不会显示图片,而只会显示一个图片占位符。这是因为在Html.fromHtml方法显示内容的时候,必须实现一个接口ImageGetter,由他来进行具体的图片显示。

                      例  ImageGetter imageGetter=new Html.ImageGetter() {

public Drawable getDrawable(String source) {
if(source != null)
{
BitmapDrawable returnDrawable=(BitmapDrawable)getResources().getDrawable(R.drawable.ic_launcher);
returnDrawable.setBounds(0,0,returnDrawable.getIntrinsicWidth(),returnDrawable.getIntrinsicHeight());
return returnDrawable;
}else{
// TODO Auto-generated method stub
return null;
}

}
};

上面这段示例程序中,用一个内部类来实现了ImageGetter 接口。内部用一个BitmapDrawable来显示图片,当BitmapDrawable对象设置完成后,我们需要对他setBounds,不然将无法显示。

在有些微博里面,会有各种链接,当点击之后能够进行跳转,或者各种操作,这里的实现我们需要借助一个SpannableStringBuilder 对象。

例:SpannableStringBuilder  spannableStringBuilder=new SpannableStringBuilder("大家好,今天天天气不错哦!");

tClickableSpan ciliClickableSpan=new ClickableSpan() {

@Override
public void onClick(View widget) {
// TODO Auto-generated method stub
Toast.makeText(AndroidUIDemoActivity.this, "你点击了", 5000).show();
}
};
    
     spannableStringBuilder.setSpan(ciliClickableSpan, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
     textView1.setText(spannableStringBuilder);

上面的例子中,SpannableStringBuilder  对象的构造函数中,插入一段文字。然后同样内部类实现tClickableSpan 接口,接口中有一个onClick方法处理当点击发生时候进行什么处理。最后spannableStringBuilder设置实现的tClickableSpan 。其中0,3两个数字代表了链接的起始和结束位置。

写的有点乱,不过只是自己整理的一点笔记啊!



完整例子代码:

public class AndroidUIDemoActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        showTextView();
    }
    
    public void showTextView()
    {
     ImageGetter imageGetter=new Html.ImageGetter() {

public Drawable getDrawable(String source) {
if(source != null)
{
BitmapDrawable returnDrawable=(BitmapDrawable)getResources().getDrawable(R.drawable.ic_launcher);
returnDrawable.setBounds(0,0,returnDrawable.getIntrinsicWidth(),returnDrawable.getIntrinsicHeight());
return returnDrawable;
}else{
// TODO Auto-generated method stub
return null;
}

}
};

/*TagHandler tagHandler=new TagHandler() {

public void handleTag(boolean opening, String tag, Editable output,
XMLReader xmlReader) {
// TODO Auto-generated method stub
//Toast.makeText(AndroidUIDemoActivity.this, tag, 2000).show();

}
};*/
     TextView textView1=(TextView)findViewById(R.id.textview1);
    
     //textView1.setText(Html.fromHtml("中国你好

美国你好

日本你好这里是图文混排",imageGetter,tagHandler));
     SpannableStringBuilder spannableStringBuilder=new SpannableStringBuilder("大家好,今天天天气不错哦!");
    
     //ImageSpan imageSpan=new ImageSpan(AndroidUIDemoActivity.this,R.drawable.btn01);
     ClickableSpan ciliClickableSpan=new ClickableSpan() {

@Override
public void onClick(View widget) {
// TODO Auto-generated method stub
Toast.makeText(AndroidUIDemoActivity.this, "你点击了", 5000).show();
}
};
    
     spannableStringBuilder.setSpan(ciliClickableSpan, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
     textView1.setText(spannableStringBuilder);
    
    }
}


更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. android editText 插入表情,或者是图片
  5. Android(安卓)图片选择器 PictureSelector
  6. Android中的多线程
  7. 布局与控件(三)-TextView那些事儿
  8. Android(安卓)SQLite 数据库存储
  9. Android(安卓)App开发基础篇—Android(安卓)Studio的基本使用

随机推荐

  1. Mac OS下Android开发环境配置详解
  2. android 自定义封装android 6.0以上动态
  3. 如何把win32下写好的cocos2d-x 转到andro
  4. Android启动Activity中间黑屏
  5. appium自动化测试Android Demo
  6. 圆形ImageView
  7. Android多媒体开发【5】-- Stagefright原
  8. 两种方式实现Android侧滑菜单
  9. Android进行全屏设置
  10. INSTALL_FAILED_CONFLICTING_PROVIDER 错