0

我有这样的代码。

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;

    }
}

但是图像都与按钮文本的底部对齐,而不是与文本的基线对齐。

4

2 回答 2

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"));
于 2013-02-06T21:38:02.287 回答
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;
}
于 2013-09-29T15:42:22.363 回答