1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android textview左边图片 Android TextView 多种方式显示图片-Fun言

android textview左边图片 Android TextView 多种方式显示图片-Fun言

时间:2019-07-23 01:18:13

相关推荐

android textview左边图片 Android TextView 多种方式显示图片-Fun言

1.XML文件中指定属性值

这种方式应该是最常用的了,在TextView的左上右下显示图片,可用

android:drawableLeft

android:drawableTop

android:drawableRight

android:drawableBottom

实例代码如下:

android:id="@+id/textview_01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:drawableTop="@drawable/ic_launcher"

android:text="hello_world" />

这种显示方式图片跟文本是居中对齐的,此种方式对应的方法是setCompoundDrawablesWithIntrinsicBounds:

mTextView01.setCompoundDrawablesWithIntrinsicBounds(null,getResources().getDrawable(R.drawable.ic_launcher, null), null, null);

如果觉得图片离文字太近,也可以设置他们之间的间距,xml或者代码中都可以实现:

android:drawablePadding="10dp"

或者

mTextView01.setCompoundDrawablePadding(10);

效果图:

2.通过解析HTML来显示图片

这种方式可以显示项目中的图片、本地SDCARD和网络的图片,当然网络的图片必须先下载到本地然后显示。

显示项目中图片

mTextView02 = (TextView) findViewById(R.id.textview_02);

// 把图片生成的ID加入img标签中

String htmlFor02 = "项目图片测试:" + "";

mTextView02.setText(Html.fromHtml(htmlFor02, new Html.ImageGetter() {

@Override

public Drawable getDrawable(String source) {

Log.d(TAG, "项目图片测试_source:" + source);

int id = Integer.parseInt(source);

Drawable drawable = getResources().getDrawable(id, null);

drawable.setBounds(0, 0, drawable.getIntrinsicWidth() ,

drawable.getIntrinsicHeight());

return drawable;

}

}, null));

可以看到,ic_launcher和apple这两张图片的ID是加到了img标签中,然后通过实现html的ImageGetter接口中的getDrawable()方法取得图片。

效果图如下:

3.通过ImageSpan和SpannableString

这种方式很简单,通过新建ImageSpan对象得到图片,然后作为参数传入SpannableString的setSpan方法中即可。看代码:

// 第三种方式

mTextView04 = (TextView) findViewById(R.id.textview_04);

ImageSpan imgSpan = new ImageSpan(this, R.drawable.apple);

SpannableString spannableString = new SpannableString("012345");

spannableString.setSpan(imgSpan, 1, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

mTextView04.setText(spannableString);

注意:setSpan(Object what, int start, int end, int flags)方法中的start和end值是用图片来取代的文本范围,flags是用来标识在 Span 范围内的文本前后输入新的字符时是否把它们也应用这个效果。

效果图:

4.通过继承TextView方式

这种方式的原理是通过继承TextView,并重写onDraw(),让图片直接画到文本上,这会导致图片跟文本重叠,它们之间的间距不好控制。

public class MyTextView extends TextView {

private Bitmap mBitmap;

/**

* @param context

* @param attrs

*/

public MyTextView(Context context, AttributeSet attrs) {

super(context, attrs);

mBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.apple);

setTextSize(40);

}

@Override

protected void onDraw(Canvas canvas) {

canvas.drawBitmap(mBitmap, 0, 0, getPaint());

super.onDraw(canvas);

}

}

然后在xml文件中引用自定义控件:

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="20dp"

android:text="@string/hello_world" />

效果图:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。