我想在用户按住按钮时更改imageview的图像,并在用户释放按钮时将图像更改回默认值。
答案 0 :(得分:0)
使用OnFocusChangeListener(view)方法&将OnFocusChange()方法重写为此。
答案 1 :(得分:0)
您需要使用XML选择器。您可以根据需要指定任何可绘制的绘图。
文档在这里:http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html
您将创建一个XML,它引用了您要应用样式的每个状态,然后在将drawable分配给视图(例如按钮)时引用,而不是特定的drawable。 / p>
查看此问题了解详情:Android selector & text color
答案 2 :(得分:0)
您可以将OnTouchListener
设置为ImageView
,然后在OnTouchListener
中设置要在MotionEvent.ACTION_DOWN
中显示的图片,并还原MotionEvent.ACTION_UP
中的旧图片1}}。
答案 3 :(得分:0)
您可以像这样创建一个自定义Button类
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" />
答案 4 :(得分:-1)