drawable
フォルダーの下に新しいres
フォルダーを追加しました。 drawable
フォルダーで、ic_launcher.png
からのファイルdrawable-hdpi
フォルダー。ボタンを押すと、標準のImageButton
イメージを新しいイメージに変更したいです。いくつかのコードを書きましたが、アプリを起動するとクラッシュします。
Button imgButton;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.imgButton).setOnClickListener(imgButtonHandler);
}
View.OnClickListener imgButtonHandler = new View.OnClickListener() {
public void onClick(View v) {
imgButton.setBackgroundResource(R.drawable.ic_launcher);
}
};
編集:これに変更しましたが、これも機能しません。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgButton = (Button) findViewById(R.id.imgButton);
imgButton.setOnClickListener(imgButtonHandler);
}
View.OnClickListener imgButtonHandler = new View.OnClickListener() {
public void onClick(View v) {
imgButton.setBackgroundResource(R.drawable.ic_launcher);
}
};
編集2:この作品。ありがとうございます。
ImageButton button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button= (ImageButton)findViewById(R.id.imgButton);
button.setOnClickListener(imgButtonHandler);
}
View.OnClickListener imgButtonHandler = new View.OnClickListener() {
public void onClick(View v) {
button.setBackgroundResource(R.drawable.ic_launcher);
}
};
これは私を少し誤解させた-それはsetImageResource
ではなくsetBackgroundResource
であるべきだ:) !!
以下は正常に動作します:
ImageButton btn = (ImageButton)findViewById(R.id.imageButton1);
btn.setImageResource(R.drawable.actions_record);
一方、setBackgroundResource
を使用すると、実際のimagebuttonの画像は残りますが、背景画像が変更されるため、見苦しいimageButtonオブジェクトになります。
ありがとう。
<ImageButton Android:src="@drawable/image_btn_src" ... />
image_btn_src.xml
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true" Android:drawable="@drawable/icon_pressed"/>
<item Android:state_pressed="false" Android:drawable="@drawable/icon_unpressed"/>
</selector>
これは、imgButtonがnullであるためです。代わりにこれを試してください:
_findViewById(R.id.imgButton).setBackgroundResource(R.drawable.ic_action_search);
_
またははるかに読みやすい:
_imgButton = (Button) findViewById(R.id.imgButton);
imgButton.setOnClickListener(imgButtonHandler);
_
次にonClickで:imgButton.setBackgroundResource(R.drawable.ic_action_search);
XMLファイルで直接行うことができます。
Android:onClick="@drawable/ic_action_search"
imgButton
変数へのassingボタンがあります:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgButton = (Button) findViewById(R.id.imgButton);
imgButton.setOnClickListener(imgButtonHandler);
}