1

drawableTop を使用して、ボタンのテキストの上に画像を表示しようとしています。

私の写真は、ドローアブルではなく、sdcard からのものです。

また、表示するボタンの数によってボタンのサイズが変わる場合があります。ボタンを増やし、ボタンを小さくし、画像を小さくします。

ボタンの作成方法は次のとおりです。

btn = (Button) LayoutInflater.from(
                            getBaseContext()).inflate(
                            R.layout.buttonstyle, l1, false);

XML ファイルのボタンスタイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
        <Button   xmlns:android="http://schemas.android.com/apk/res/android" 
            android:background="@drawable/roundcorners" 
            android:id="@+id/buttonTest" 
            android:scaleType="centerInside"
            android:cropToPadding="false"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:paddingBottom="10dip"
            android:layout_height="fill_parent" 
            android:layout_width="wrap_content"
            android:text="Test text"
            android:textSize="40dip"
            android:textStyle="bold"
            android:textColor="#000000">
        </Button>

そして、drawableTop を作成する方法は次のとおりです。

Drawable drawableTop = Drawable.createFromPath(endImagemVoltar); 
btn.setCompoundDrawables(null, drawableTop, null, null);

テキストはボタンに表示されますが、画像は表示されません。

エラーはどこにありますか?

どんな助けでも大歓迎です!

4

1 に答える 1

1

不足しているのは、ドローアブルがすでにsetBounds(Rect)を呼び出していることであり、画像をビットマップにロードしてからドローアブルに取得しようとすることだと思います。

Bitmap bitmapImage = BitmapFactory.decodeFile(endImagemVoltar);
Drawable bgrImage = new BitmapDrawable(bitmapImage);

SetBounds を使用するには:

 public void setBounds (int left, int top, int right, int bottom)

たとえば、50x50 サイズの場合:

drawable.setBounds(0, 0, 50, 50);

于 2012-07-01T23:25:07.983 に答える