我有一个relativelayout并编码onTouchListener
以突出显示背景,如下所示:
relative3.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View arg0, MotionEvent event)
{
if(event.getAction()==MotionEvent.ACTION_DOWN )
{
relative3.setBackgroundColor(getResources().getColor(R.color.tran_grey));
}
if((event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL))
{
relative3.setBackgroundColor(getResources().getColor(android.R.color.transparent));
}
return true;
}
});
并在onClick
relative3.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
custom_toast("Redirecting...");
}
});
relativelayout可以在ACTION_DOWN
上显示突出显示,并在ACTION_UP
后返回透明状态。然而,点击它,吐司似乎没有显示为编码。
怎么可以修改?谢谢!
答案 0 :(得分:2)
确保布局具有属性android:clickable="true"
进行颜色更改的正确方法是使用具有按下和正常状态的背景可绘制xml。如果在代码中执行此操作,请使用getActionMasked()而不是getAction()
答案 1 :(得分:0)
返回false,以便OnTouchListener不会消耗该事件,因此clicklistener将起作用..
relative3.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View arg0, MotionEvent event)
{
if(event.getAction()==MotionEvent.ACTION_DOWN )
{
relative3.setBackgroundColor(getResources().getColor(R.color.tran_grey));
}
if((event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL))
{
relative3.setBackgroundColor(getResources().getColor(android.R.color.transparent));
}
// change to false.
return false;
}
});
答案 2 :(得分:0)
您需要return false
方法onTouch
告诉 OnTouchListener 该消息未被消费。之后,它会将点击事件转发到 OnClickListener 的onClick
方法。