現(xiàn)在App的UI設(shè)計中Drawerlayout+NavigationView是一個比較常用的設(shè)計了,而以前我一般只是在Navigation中的menu(即下部的item中)添加事件監(jiān)聽,而今天碰到一個需要是要在header中增加事件監(jiān)聽。
10年積累的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有寶興免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。需求如下:點擊圖片,在底部彈出一個彈出窗口。
側(cè)邊導(dǎo)航欄布局:
那顯然我們得要獲取到這個p_w_picpath的id,從而給它設(shè)置點擊事件監(jiān)聽。
然而,當(dāng)我用ButterKnife去綁定它的時候,直接就報錯了
也對,這個時候側(cè)邊欄還沒有打開
接下來我就想著要在側(cè)邊欄打開的情況下去獲取到這個id,怎么監(jiān)聽側(cè)邊欄是否打開呢,我嘗試了這個方法
(竊喜),在onDrawerOpened中寫入進行一波findViewById操作應(yīng)該就可以了吧。
然并卵。。。
點擊頭像毫無反應(yīng)。
最后,那我們就不在xml中靜態(tài)導(dǎo)入header了還不行嗎,我們直接在代碼中直接導(dǎo)入header的布局,然后再來獲取它里面圖片的id,并為其設(shè)置事件監(jiān)聽,終于KO。
此處需要刪除原先的這一行:
app:headerLayout="@layout/nav_header_main"
onCreate()中加入下面代碼:
View drawerView = navigationView.inflateHeaderView(R.layout.nav_header_main); CircleImageView account = (CircleImageView) drawerView.findViewById(R.id.account); account.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { bottomPopupOption = new BottomPopupOption(TabHostActivity.this); bottomPopupOption.setItemText("拍照","選擇相冊"); bottomPopupOption.showPopupWindow(); } });
最終的效果圖:
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。