2014-01-17 22 views
0

现在,我已经在我的对话框按钮功能正常,其中:如何使一个按钮的外观单击时“视觉按住” /压

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

回答

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

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

1

只需更换其背景为新DrawableonClick方法,或布局文件,其中你会创建一个“按住”效应。例如:

your_button.setDrawableByLayerId(R.id.imagen_fondo, getResources().getDrawable(new_drawable)); 
相关问题