android popuwindow點(diǎn)擊外部窗口不消失的實(shí)例
網(wǎng)上大多數(shù)都是說(shuō)如何監(jiān)聽點(diǎn)擊外部消失,但我遇到的問(wèn)題是點(diǎn)擊外面不讓其消失,如下是我的解決方案,關(guān)鍵是:popupMenu.setBackgroundDrawable(null);popupMenu.setFocusable(false);
popupMenu = new PopupWindow(view, keylinearlayout.getWidth(), LayoutParams.WRAP_CONTENT);
ColorDrawable cd = new ColorDrawable(R.color.white);
//popupMenu.setBackgroundDrawable(cd);
popupMenu.setBackgroundDrawable(null);
popupMenu.setAnimationStyle(R.style.AnimBottom);
popupMenu.update();
popupMenu.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
popupMenu.setTouchable(true); // 設(shè)置popupwindow可點(diǎn)擊
popupMenu.setOutsideTouchable(false); // 設(shè)置popupwindow外部可點(diǎn)擊
popupMenu.setFocusable(false); // 獲取焦點(diǎn)
popupMenu.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// 如果點(diǎn)擊了popupwindow的外部,popupwindow也會(huì)消失
// 這里如果返回true的話,touch事件將被攔截
// 攔截后 PopupWindow的onTouchEvent不被調(diào)用,這樣點(diǎn)擊外部區(qū)域無(wú)法dismiss
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
//popupMenu.dismiss();
StationEventCaptain.getInstance().fireEventDataChange(
new StationEventData(IStationEventName.HEDGE_KEYBORAD_DIMISS, true));
return true;
}
return false;
}
});
//初始化鍵盤上的數(shù)字
initALLDig(view);
}
@Override
public PopupWindow createPupupWindow() {
return popupMenu;
}
@Override
public void showPopupMenu() {
if (popupMenu != null && popupMenu.isShowing()) {
popupMenu.dismiss();
StationEventCaptain.getInstance().fireEventDataChange(
new StationEventData(IStationEventName.HEDGE_KEYBORAD_DIMISS, true));
} else {
//popupMenu.showAsDropDown(sourceEditView);
int pianyi = dpToPx(activity, 8);
if (keyboardType == IPopupMenu.MENU_TYPE_HEDGE_Left) {
popupMenu.showAtLocation(keylinearlayout, Gravity.BOTTOM | Gravity.LEFT, pianyi, 0); //設(shè)置layout在PopupWindow中顯示的位置
} else if (keyboardType == IPopupMenu.MENU_TYPE_HEDGE_RIGHT) {
popupMenu.showAtLocation(keylinearlayout, Gravity.BOTTOM | Gravity.RIGHT, pianyi, 0); //設(shè)置layout在PopupWindow中顯示的位置
} else {
popupMenu.showAtLocation(keylinearlayout, Gravity.BOTTOM | Gravity.LEFT, 0, 0); //設(shè)置layout在PopupWindow中顯示的位置
}
// popupMenu.showAsDropDown(sourceView,
// Math.round(sourceView.getX()),
// (int) (sourceView.getY()));
}
}
/**
* 將dp轉(zhuǎn)成像素的
*
* @param context
* @param dp
* @return
*/
static int dpToPx(final Context context, final float dp) {
return (int) (dp * context.getResources().getDisplayMetrics().density);
}
@Override
public void destroyPopupMenu() {
popupMenu.dismiss();
StationEventCaptain.getInstance()
.fireEventDataChange(new StationEventData(IStationEventName.HEDGE_KEYBORAD_DIMISS, true));
}
成功解決,有問(wèn)題可以討論。
以上這篇android popuwindow點(diǎn)擊外部窗口不消失的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Android7.0 工具類:DiffUtil詳解
- 適配android7.0獲取文件的Uri的方法
- Android7.0 MessageQueue詳解
- Android圓形頭像拍照后“無(wú)法加載此圖片”的問(wèn)題解決方法(適配Android7.0)
- Android中PopuWindow實(shí)現(xiàn)下拉列表實(shí)例
- Android adb.exe程序啟動(dòng)不起來(lái) 具體解決方法
- Android Studio的中文亂碼問(wèn)題解決方法
- Android Activity切換(跳轉(zhuǎn))時(shí)出現(xiàn)黑屏的解決方法 分享
- 基于Android中實(shí)現(xiàn)定時(shí)器的3種解決方法
- Android SDK三種更新失敗及其解決方法
- Android7.0上某些PopuWindow出現(xiàn)顯示位置不正確問(wèn)題的解決方法
相關(guān)文章
Android 調(diào)用系統(tǒng)應(yīng)用的方法總結(jié)
這篇文章主要介紹了Android 調(diào)用系統(tǒng)應(yīng)用的方法總結(jié)的相關(guān)資料,這里提供調(diào)用錄像,錄音,拍照等功能,需要的朋友可以參考下2017-08-08
Android黑科技之讀取用戶短信+修改系統(tǒng)短信數(shù)據(jù)庫(kù)
這篇文章主要介紹了Android黑科技之讀取用戶短信+修改系統(tǒng)短信數(shù)據(jù)庫(kù) 的相關(guān)資料,需要的朋友可以參考下2015-12-12
android內(nèi)存優(yōu)化之圖片優(yōu)化
對(duì)圖片本身進(jìn)行操作。盡量不要使用setImageBitmap、setImageResource、BitmapFactory.decodeResource來(lái)設(shè)置一張大圖,因?yàn)檫@些方法在完成decode后,最終都是通過(guò)java層的createBitmap來(lái)完成的,需要消耗更多內(nèi)存2012-12-12
簡(jiǎn)單實(shí)現(xiàn)Android繪圖板
這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)Android繪圖板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Android動(dòng)態(tài)修改ToolBar的Menu菜單示例
本篇文章主要介紹了Android動(dòng)態(tài)修改ToolBar的Menu菜單示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
Android?webView加載數(shù)據(jù)時(shí)內(nèi)存溢出問(wèn)題及解決
這篇文章主要介紹了Android?webView加載數(shù)據(jù)時(shí)內(nèi)存溢出問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
android ViewPager實(shí)現(xiàn)自動(dòng)無(wú)限輪播和下方向?qū)A點(diǎn)
本篇文章主要介紹了android ViewPager實(shí)現(xiàn)自動(dòng)輪播和下方向?qū)A點(diǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02
Android Studio default not found錯(cuò)誤解決辦法
這篇文章主要介紹了Android Studio gradle 編譯提示‘default not found’ 解決辦法的相關(guān)資料,需要的朋友可以參考下2017-01-01

