元のAndroidを保持したまま、画像をButton
に追加したい(imagebutton
はありません。特定のボタンにはテキストまたは画像を含めることができます。さらに、画像ボタンにも同じ問題があります)。スタイルのボタン。したがって、XMLにAndroid:background
を追加しても、Android角の丸いデフォルトボタンなどが削除されるため、カットされません。(Android.R.drawable.btn_default)
これは何らかの方法で可能ですか?
1つの方法は、押されたボタンの9patch
画像(上に1つ、下に1つ)を作成し、onTouch Action_DOWN
レイヤードバックグラウンドをドローアブルにしてボタンに配置することです。しかし、別の9patch
for onTouch Action_UP
を使用しますが、すべてのボタンクリック(およびアプリケーション、それはかなりたくさんなります)。上記の内容は正しいですか?
編集:画像をWebサービスから取得するため、XMLで画像のソースを宣言できません。ボタンには何でも配置できますが、プログラムで実行する必要があります。
これは、Android:drawableTop
、Android:drawableBottom
、Android:drawableLeft
、Android:drawableRight
layout.xmlの属性。
<Button
Android:layout_width="0dp"
Android:layout_weight="1"
Android:background="@drawable/home_button"
Android:drawableLeft="@Android:drawable/ic_menu_edit"
Android:drawablePadding="6dp"
Android:gravity="left|center"
Android:height="60dp"
Android:padding="6dp"
Android:text="AndroidDhina"
Android:textColor="#000"
Android:textStyle="bold" />
詳細情報 http://androiddhina.blogspot.in/2015/09/how-to-add-image-inside-button.html
テキスト付き画像を表示するボタンのプロパティの下に設定します。このプロパティ画像を使用すると、テキストの上に表示されます。
<Button Android:drawableTop="@drawable/ic_launcher"/>
画像設定用:
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");
}
});
}
複数の状態を持つ独自のドローアブルを作成し、それを背景に設定できます
<?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"/>