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 に答える