[Android]父View如何知道子View被點(diǎn)擊了

需求是這樣的:
封裝了一個(gè)View抛蚁,類似這樣:

image.png

1處的view是添加進(jìn)來的,需要在點(diǎn)了1里面的某個(gè)view之后风科,把整個(gè)view隱藏掉。
因?yàn)?code>1處的view是添加進(jìn)來的给郊,它里面的子view的點(diǎn)擊事件都寫在它的類里面的整胃,外部不知道有沒有被點(diǎn)擊赋秀,也就沒法隱藏整個(gè)view杠愧。

思路:利用viewOnTouchListener配合GestureDetector來通知是否被點(diǎn)擊了
  • 如果這個(gè)viewViewGroup待榔,遍歷所有的子view,判斷子view和自身是否有點(diǎn)擊事件和是否顯示
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殴蹄,否則會(huì)攔截onClick事件
                }
            });
        }
        for(int i = 0;i<viewGroup.getChildCount();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究抓,否則會(huì)攔截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);
            }
        });
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末猾担,一起剝皮案震驚了整個(gè)濱河市袭灯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绑嘹,老刑警劉巖稽荧,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異工腋,居然都是意外死亡姨丈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門擅腰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蟋恬,“玉大人,你說我怎么就攤上這事趁冈〖哒” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵渗勘,是天一觀的道長沐绒。 經(jīng)常有香客問我,道長旺坠,這世上最難降的妖魔是什么乔遮? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮取刃,結(jié)果婚禮上蹋肮,老公的妹妹穿的比我還像新娘。我一直安慰自己璧疗,他們只是感情好坯辩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著病毡,像睡著了一般濒翻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天有送,我揣著相機(jī)與錄音淌喻,去河邊找鬼。 笑死雀摘,一個(gè)胖子當(dāng)著我的面吹牛裸删,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阵赠,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涯塔,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了清蚀?” 一聲冷哼從身側(cè)響起匕荸,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枷邪,沒想到半個(gè)月后榛搔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡东揣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年践惑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘶卧。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尔觉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芥吟,到底是詐尸還是另有隱情侦铜,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布运沦,位于F島的核電站泵额,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏携添。R本人自食惡果不足惜嫁盲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烈掠。 院中可真熱鬧羞秤,春花似錦、人聲如沸左敌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矫限。三九已至哺哼,卻和暖如春佩抹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背取董。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工棍苹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茵汰。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓枢里,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蹂午。 傳聞我的和親對(duì)象是個(gè)殘疾皇子栏豺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容