溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

TabHost實現(xiàn)點擊事件

發(fā)布時間:2020-10-15 15:07:20 來源:網(wǎng)絡(luò) 閱讀:1660 作者:roadley 欄目:開發(fā)技術(shù)

在一般的情況下,我們只需要在Tab欄中實現(xiàn)兩種狀態(tài)的切換,這時候運用selector就可以簡單的實現(xiàn)了。

而如果是三種狀態(tài)之間的切換呢,具體效果如圖所示

TabHost實現(xiàn)點擊事件(注:實現(xiàn)的是使用FragmenTabHost)

效果是不選中時顯示最左邊狀態(tài),選中第一次時顯示中間狀態(tài),再一次點擊過后顯示右側(cè)狀態(tài)。


在找到正確的做法之前,我試過了TabHost的所有監(jiān)聽器,均以失敗告終。


其后,我們知道每一個tab標(biāo)簽都是一個布局,所以我在把這個布局添加到tab中時設(shè)置點擊事件,這樣做又是否可行呢,答案依舊是否定的,與TabHost的點擊事件一樣,他們都會被我們實現(xiàn)的onTabChangedListener搶占了。


最后才在同學(xué)的幫助下找到了一個能實現(xiàn)此效果的方法:

mTabHost.getTabWidget().getChildAt(1).setOnClickListener()

利用mTabHost.getTabWidget().getChildAt(1)方法找到的是tab標(biāo)簽位置為1的那個布局,設(shè)置它的點擊事件,在點擊事件中找到布局之中的圖片,去設(shè)置即可。


照理說此時應(yīng)該完美無瑕了,可是運行出來后,發(fā)現(xiàn)這是tab為1的這個位置會有點擊事件(當(dāng)然了,設(shè)置圖片這個是看不出來的,發(fā)個Toast還是能出來的),但是點擊它選中的效果沒有了。


這是因為此時這個tab標(biāo)簽的位置只去響應(yīng)了我們的點擊事件,而不會響應(yīng)TabChangeLinstener的事件了。


此時需要在監(jiān)聽事件的代碼中加入一句話,設(shè)置當(dāng)前選中的tab標(biāo)簽

mTabHost.setCurrentTab(1);

這樣就真的能做到完美無瑕了。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI