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. android editText 插入表情,或者是图片
  2. Android 图片选择器 PictureSelector
  3. android EditText控件自动获取焦点弹出键盘解决方法
  4. Unity3d调用android中的方法
  5. Android获取当前已连接的wifi信号强度的方法
  6. 五.在Android中实现线程的方法
  7. Android常见Exception解决方法
  8. Android 保存 JNI 层 opencv cvMat 图片
  9. 关于Android studio 使用fastjson报错的解决方法

随机推荐

  1. Android: NDK编程入门笔记
  2. 如果没有 Android,世界会怎样?
  3. Android学习笔记1---简单计算器
  4. 在ubuntu上安装google play和安卓应用
  5. Android(安卓)项目导入eclipse中报错但找
  6. Android拍照实现方式概述
  7. ANDROID中按键的添加配置(linux按键到andr
  8. 利用HTML5开发Android笔记
  9. Android中原始资源文件使用详解
  10. Android设备之间通过Wifi通信的示例代码