单击/按下按钮时,如何使按钮看起来“视觉上按下”

时间:2014-01-17 20:05:00

标签: android android-layout

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

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文件,因为我试图避免修改它。我试图查看视图的方法,但我找不到任何方法。谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

如果您只是想改变按钮的色调以显示它被按下(这也适用于长按):

实现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;
}

将数值调整为所需的颜色。