Sam*_*ehi 0 android ontouchlistener android-scrollview android-button motionevent
我心中已经有了一个Button内部ScrollView。
<ScrollView>
<LinearLayout>
...
<Button/>
...
<LinearLayout/>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
我正在使用此按钮来记录语音。当它捕获到MotionEvent.ACTION_DOWN事件时,我开始重新编码,并在MotionEvent.ACTION_DOWN事件停止时将其停止。
buttomRecord.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
startRecording();
return true;
}
else if(event.getAction() == MotionEvent.ACTION_UP){
stopRecording();
return true;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
当用户录制语音,如果这个问题是ScrollView滚动向上或向下,该按钮就会失去焦点,从来没有抓MotionEvent.ACTION_UP事件。
怎样才能锁定焦点Button,而我拿着它或禁用ScrollView滚动?
您可以使用
mScrollView.requestDisallowInterceptTouchEvent(true);
Run Code Online (Sandbox Code Playgroud)
禁止触摸事件 scrollview
所以你的代码将是
buttomRecord.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
startRecording();
mScrollView.requestDisallowInterceptTouchEvent(true);
return true;
}
else if(event.getAction() == MotionEvent.ACTION_UP){
stopRecording();
mScrollView.requestDisallowInterceptTouchEvent(false);
return true;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1767 次 |
| 最近记录: |