ユーザーがボタンを押しているときにイメージビューの画像を変更し、ユーザーがボタンを離したときに画像をデフォルトに戻したいです。
質問する
162 次
5 に答える
0
このようなカスタム ボタン クラスを作成できます。
public class MButton extends Button {
public MButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public MButton(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public MButton(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
// define style
/**
* Send resource ids for normal, selected, pressed in respective order
*
* @param mImageIds
*/
public void setDrawablePressedBg(Integer... mImageIds) {
StateListDrawable bg = new StateListDrawable();
Drawable normal = this.getResources().getDrawable(mImageIds[0]);
Drawable selected = this.getResources().getDrawable(mImageIds[1]);
Drawable pressed = this.getResources().getDrawable(mImageIds[2]);
bg.addState(View.PRESSED_ENABLED_STATE_SET, pressed);
bg.addState(View.ENABLED_FOCUSED_STATE_SET, selected);
bg.addState(View.ENABLED_STATE_SET, normal);
bg.addState(View.FOCUSED_STATE_SET, selected);
bg.addState(View.EMPTY_STATE_SET, normal);
this.setBackgroundDrawable(bg);
}
// define style
public void setBackgroundPressedBg(Integer p1, Integer p2, Integer p3) {
StateListDrawable bg = new StateListDrawable();
Drawable normal = this.getResources().getDrawable(p1);
Drawable selected = this.getResources().getDrawable(p2);
Drawable pressed = this.getResources().getDrawable(p3);
bg.addState(View.PRESSED_ENABLED_STATE_SET, pressed);
bg.addState(View.ENABLED_FOCUSED_STATE_SET, selected);
bg.addState(View.ENABLED_STATE_SET, normal);
bg.addState(View.FOCUSED_STATE_SET, selected);
bg.addState(View.EMPTY_STATE_SET, normal);
this.setBackgroundDrawable(bg);
}
}
そして、onCreateメソッドでこのように使用できます
this.book_appointment = (MButton) this._view
.findViewById(R.id.btn_book);
this.book_appointment.setBackgroundPressedBg(R.drawable.btnnormal,
R.drawable.btnsel, R.drawable.btnsel);
これは、xmlレイアウトファイルで次のようになります
<com.packageName.custom.MButton
android:id="@+id/btn_book"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_time1"
android:layout_marginTop="20dp"
android:background="@drawable/bookapointment" />
于 2012-12-27T14:39:58.893 に答える
0
OnFocusChangeListener(view) メソッドを使用して、これに OnFocusChange() メソッドをオーバーライドします。
于 2012-12-27T14:22:36.683 に答える
0
これには XML セレクターを使用する必要があります。必要な状態に必要なドローアブルを指定できます。
ドキュメントはこちら: http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html
スタイルを適用する各状態への参照を持つ XML を作成し、特定のドローアブルの代わりにビュー (ボタンなど) にドローアブルを割り当てるときに参照します。
詳細については、この SO の質問を確認してください: Android セレクターとテキストの色
于 2012-12-27T14:24:10.647 に答える
0
に を設定OnTouchListener
し、ImageView
でOnTouchListener
表示したい画像を設定しMotionEvent.ACTION_DOWN
、 で古い画像を元に戻すことができますMotionEvent.ACTION_UP
。
于 2012-12-27T14:29:26.123 に答える
-1
于 2013-08-12T20:35:38.570 に答える