我有这样的代码。
Button b = findViewById(R.id.button);
mImgGetter = new MiniImageGetter(this);
b.setText(Html.fromText("<img src=\"foo\"> FOO!"),mImgGetter,null)
其中MiniImageGetter是一个类:
class MiniImageGetter implements ImageGetter {
private Context mContext;
public MiniImageGetter(Context c) {
mContext =c;
}
@Override
public Drawable getDrawable(String source) {
Drawable d = mContext.getResources().getDrawableR.drawable.foo);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
}
}
但是图像都与Button文本的底部对齐,而不是与文本的基线对齐。
答案 0 :(得分:1)
我没有找到真正的解决方案,但作为解决方法,这有效:
private SpannableString getSpannableString(int image, int buttontext) {
Drawable d = getResources().getDrawable(image);
SpannableString ss = new SpannableString(" " + getString(buttontext));
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
ss.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
return ss;
}
然后使用
b.setText(getSpannableString(R.drawable.foo,"Text with image in front of it"));
答案 1 :(得分:0)
您可以使用此功能将内嵌图像与文本对齐。
public Drawable getDrawable(String source) {
BitmapDrawable d = ...;
d.setBounds(new Rect(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight() + 5));
d.setGravity(Gravity.TOP);
return d;
}