Android “如何使按钮看起来像”;目测压下;单击/按下时

Android “如何使按钮看起来像”;目测压下;单击/按下时,android,android-layout,Android,Android Layout,现在,我的对话框中有一个功能按钮,其中: protected Dialog onCreateDialog(...) { ... final Button storeButton = (Button) dialog.findViewById(R.id.btn_store); storeButton.setOnClickListener(new Button.OnClickListener() { @Override publi

现在,我的对话框中有一个功能按钮,其中:

protected Dialog onCreateDialog(...) {
    ...
    final Button storeButton = (Button) dialog.findViewById(R.id.btn_store);
    storeButton.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MyClass.this, StoreListViewActivity.class);
                startActivity(intent);
            }
    });
}

当长按按钮时,如何使其看起来被按下(即视觉上被按住)?我没有这个类的XML文件,因为我试图避免修改它。我试图查看视图的方法,但找不到任何方法。谢谢

只需在
onClick
方法中将其背景替换为新的
draawable
,或布局文件,您可以在其中创建“按住”效果。例如:

your_button.setDrawableByLayerId(R.id.imagen_fondo, getResources().getDrawable(new_drawable));

如果您只想更改按钮的颜色以显示其已按下(这也适用于长时间按下):

实现OnTouchListener并重写此方法:

@Override
public boolean onTouch(View v, MotionEvent event) {
    switch (v.getId()) {
    case R.id.btn_play:
        if (event.getAction() == MotionEvent.ACTION_DOWN)
            btnPlay.setColorFilter(Color.argb(100, 37, 169, 208));
        else if(event.getAction() == MotionEvent.ACTION_UP)
            btnPlay.setColorFilter(Color.argb(0, 0, 228, 253));
        break;
    case R.id.btnBuy:
        if (event.getAction() == MotionEvent.ACTION_DOWN)
            btnBuy.setColorFilter(Color.argb(255, 37, 169, 208));
        else if(event.getAction() == MotionEvent.ACTION_UP)
            btnBuy.setColorFilter(Color.argb(0, 0, 228, 253));
        break;
    }
    return false;
}
将数字值调整为所需的颜色