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購(gòu)物車項(xiàng)目快速開發(fā)
這篇文章主要為大家詳細(xì)介紹了Android購(gòu)物車項(xiàng)目快速開發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
Android ListView長(zhǎng)按彈出菜單二種實(shí)現(xiàn)方式示例
這篇文章主要介紹了Android ListView長(zhǎng)按彈出菜單的方法,大家參考實(shí)現(xiàn)2013-11-11
Android UI控件之ImageSwitcher實(shí)現(xiàn)圖片切換效果
這篇文章主要為大家詳細(xì)介紹了Android UI控件之ImageSwitcher實(shí)現(xiàn)圖片切換效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
android實(shí)現(xiàn)關(guān)閉或開啟移動(dòng)網(wǎng)絡(luò)數(shù)據(jù)
本篇文章是對(duì)android實(shí)現(xiàn)關(guān)閉或開啟移動(dòng)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Android launcher中模擬按home鍵的實(shí)現(xiàn)
這篇文章主要介紹了Android launcher中模擬按home鍵的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2017-05-05
Android Studio下的APP目錄結(jié)構(gòu)詳解
這篇文章主要介紹了AndroidStudio下的APP目錄結(jié)構(gòu),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
Android開發(fā)中避免應(yīng)用無(wú)響應(yīng)的方法(Application Not Responding、ANR)
這篇文章主要介紹了Android開發(fā)中避免應(yīng)用無(wú)響應(yīng)的方法,即避免彈出Application Not Responding(ANR)對(duì)話框,需要的朋友可以參考下2014-06-06
Android App中ViewPager所帶來(lái)的滑動(dòng)沖突問(wèn)題解決方法
Android中我們經(jīng)常使用ViewPager配合Fragment實(shí)現(xiàn)視圖滑動(dòng),但在實(shí)際操作中又會(huì)經(jīng)常發(fā)生方向上的沖突問(wèn)題,這里我們就來(lái)總結(jié)一下Android App中ViewPager所帶來(lái)的滑動(dòng)沖突問(wèn)題解決方法:2016-06-06

