13

元のAndroidスタイルのボタンを保持しながら、画像をに追加したいButtonimagebutton特定のボタンにはテキストまたは画像を含めることができるため、さらに画像ボタンにも同じ問題があるため)。そのため、XMLを追加android:backgroundしても、角の丸い Android のデフォルト ボタンなどが削除されるため、問題は解決しません。(android.R.drawable.btn_default)

これは何らかの形で可能ですか?

1つの方法は、9patch押されたボタンの画像(1つは上用、もう1つは下用)をonTouch Action_DOWN作成し、レイヤードバックグラウンドをドローアブルにしてボタンに配置し、同じことを別9patchのもので行うことonTouch Action_UPだと思いますが、それはアプリケーションのパフォーマンスを大幅に低下させます。これは、すべてのボタン クリックに対してかなりの量のリソースの読み取りとレイヤーのマージが必要になるためです (私のアプリケーションでは、かなりの量になります)。私が上に述べたことは正しいですか?

編集: Web サービスから画像を取得するため、XML で画像のソースを宣言することはできません。ボタンには何でも配置できますが、プログラムで実行する必要があります。

4

5 に答える 5

27

これは、layout.xml で、、、、属性を使用して行うことができandroid:drawableTopますandroid:drawableBottomandroid:drawableLeftandroid:drawableRight

于 2012-09-19T09:38:22.603 に答える
8

テキスト付き画像を表示するボタンのプロパティを下に設定し、このプロパティを使用してテキストの上に画像を表示します。

<Button android:drawableTop="@drawable/ic_launcher"/>
于 2012-09-19T09:42:51.123 に答える
2

画像設定用:

btn.setBackgroundResource(R.drawable.ic_launcher);

テキストの設定:

btn.setText("My Button");

コード:

private Drawable buttonDrawable;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final Button btn=(Button) findViewById(R.id.button1);
    buttonDrawable=btn.getBackground();
    //Setting the image.
    btn.setBackgroundResource(R.drawable.ic_launcher);
    btn.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            /*Removing image and setting text*/
            btn.setBackgroundDrawable(buttonDrawable);
            btn.setText("My Button");   
        }
    });
}
于 2012-09-19T09:44:51.640 に答える
0

複数の状態で独自のドローアブルを作成し、それを背景に設定できます

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" 
        android:drawable="@drawable/selected" />
    <item android:drawable="@drawable/normal" />
</selector>

ドローアブルは、このように角を丸くすることができます。

<corners android:topLeftRadius="5dp" android:topRightRadius="5dp"
         android:bottomLeftRadius="0.2dp" android:bottomRightRadius="0.2dp"/>
于 2012-09-19T09:36:45.013 に答える