android判断是否被点击方法,[Android]父View如何知道子View被点击了
需求是這樣的:
封裝了一個View,類似這樣:
image.png
1處的view是添加進來的,需要在點了1里面的某個view之后,把整個view隱藏掉。
因為1處的view是添加進來的,它里面的子view的點擊事件都寫在它的類里面的,外部不知道有沒有被點擊,也就沒法隱藏整個view。
思路:利用view的OnTouchListener配合GestureDetector來通知是否被點擊了
如果這個view是ViewGroup,遍歷所有的子view,判斷子view和自身是否有點擊事件和是否顯示
private void setGesture(ViewGroup viewGroup){
if(viewGroup.hasOnClickListeners() && viewGroup.getVisibility() == VISIBLE){
viewGroup.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return detector.onTouchEvent(event);//一定要返回false,否則會攔截onClick事件
}
});
}
for(int i = 0;i
View view = viewGroup.getChildAt(i);
if(view instanceof ViewGroup){
setGesture((ViewGroup) view);
continue;
}
if(view.hasOnClickListeners() && view.getVisibility() == VISIBLE){
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return detector.onTouchEvent(event); //一定要返回false,否則會攔截onClick事件
}
});
}
}
}
如果是view就跳過遍歷子view這一步
配合GestureDetector:
detector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener(){
@Override
public boolean onSingleTapConfirmed(MotionEvent e) { //單擊
if(onViewClick!= null){
onViewClick.onClick(null);
}
return super.onSingleTapConfirmed(e);
}
});
總結
以上是生活随笔為你收集整理的android判断是否被点击方法,[Android]父View如何知道子View被点击了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 管理系统模板c语言,管理系统c语言
- 下一篇: android 代码浏览,Webview