Ade*_*les 5 android release pressed ontouchlistener
问题描述:
我有TextView一个RelativeLayout和我要的颜色它的红色,当用户触摸它,另一页上走的时候,他点击它.所以我试着设置一个OnClickListener来做点击,并OnTouchListener实现触摸功能(MotionEvent.ACTION_DOWN)但是这个组合不起作用,因为OnTouchListener使得OnClickListener非功能性(不知道为什么).
在论坛上,人们说我们可以OnClick通过OnTouch 来实现MotionEvent.ACTION_UP,但是这个可以从我的TextView布局中触发(如果你按下它并将你的手指从他的手指中释放就会点击TextView)这不是所希望的行为因为我想:
在TextView上点击=按+释放.
有人可以给我一个解决方案吗?
sve*_*ven 21
你可以在action_up时调用View.performClick().希望能帮助到你.
your_txtView.setOnClickListener(new TextView.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
your_txtView.setOnTouchListener(new TextView.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event.getAction()) {
} else if (MotionEvent.ACTION_UP == event.getAction()) {
v.performClick();
}
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
Adel,是第一次点击有问题,还是根本没有点击?
如果您有多个可点击布局,则第一个布局不会收到任何点击事件,就会出现此问题。那是因为它首先选择它,然后你得到点击事件,尝试下面的代码。
private class CustomTouchListener implements OnTouchListener {
@Override
public boolean onTouch(View v, MotionEvent event) {
TextView tv = (TextView) v.findViewById(R.id.single_line_text);
if (event.getAction() == MotionEvent.ACTION_DOWN) {
tv.setTextColor(COLOR_WHEN_PRESSED);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
tv.setTextColor(COLOR_WHEN_RELEASED);
// Action of click goes here
} else if (event.getAction() == MotionEvent.ACTION_CANCEL) {
tv.setTextColor(COLOR_WHEN_RELEASED);
// To handle release outside the layout region
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您为布局设置触摸侦听器,这在我当前的实现中有效。
您还需要在布局上进行以下设置
android:focusable="true"
android:focusableInTouchMode="true"
android:clickable="true"
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!!!
编辑:此外,向下和向上都应该有一个标志。将其设置为 DOWN 并检查是否设置为 UP。这将避免用户可能点击屏幕中的任意位置,然后将鼠标悬停在文本视图上并释放它的错误。
| 归档时间: |
|
| 查看次数: |
17663 次 |
| 最近记录: |