1. 程式人生 > >Android問題——PopupWindow的isShowing()一直都是返回false

Android問題——PopupWindow的isShowing()一直都是返回false

問題:檢視是否這樣的設計思路:用一個按鈕,通過isShowing()來判斷狀態,然後展示和隱藏popup。且使能了外部觸控

setBackgroundDrawable(new BitmapDrawable()); 
setOutsideTouchable(true)

然後在按鈕中獲取isShowing()的狀態,結果一直返回的都是false。

原因分析:你觸控按鈕的時候,它屬於外部區域,觸控它肯定會把popup隱藏,所以,在按鈕事件中判斷一直都是false

解決辦法:讓popup把焦點從外部搶奪過來,setFocusable(true)即可,至於setTouchable(true),不用也行。這個時候也不用判斷狀態了,按鈕中只處理顯示程式碼就行了

附上PopupWindow常用API:

// 一、構造方法:
// PopupWindow 必須設定寬高,無論在構造中,還是後續再新增
PopupWindow (Context context); 
PopupWindow(View contentView);
PopupWindow(View contentView, int width, int height);  
PopupWindow(View contentView, int width, int height, boolean focusable);  

// 二、常用方法:
setWidth(int width); // 設定寬度
setHeight(int
height); // 設定高度 setContentView(View contentView); // 設定內容控制元件 setFocusable(boolean focusable); // 設定是否獲取焦點 setTouchable(boolean touchable); // 設定是否能否觸控 setBackgroundDrawable(Drawable background); // 設定背景 setOutsideTouchable(boolean touchable); // 要使能外部觸控,必須設定setBackgroundDrawable() // 相對某個控制元件的位置(正左下方),無偏移 showAsDropDown(View anchor); // 相對某個控制元件的位置,有偏移;xoff表示x軸的偏移,正值表示向左,負值表示向右;yoff表示相對y軸的偏移,正值是向下,負值是向上
showAsDropDown(View anchor, int xoff, int yoff); // 相對於父控制元件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以設定偏移或無偏移 showAtLocation(View parent, int gravity, int x, int y); dismiss(); // 隱藏 isShowing(); // 獲取顯示狀態

相關推薦

Android問題——PopupWindow的isShowing()一直返回false

問題:檢視是否這樣的設計思路:用一個按鈕,通過isShowing()來判斷狀態,然後展示和隱藏popup。且使能了外部觸控 setBackgroundDrawable(new BitmapDrawable()); setOutsideTouchable(tr

Android mkdirs或mkdir一直返回false(createNewFile也失敗)

昨天要寫一個Android自定義異常捕獲的類,然後把異常資訊儲存到手機中,需求很簡單,網上例子也很多,我用的是這個自定義異常捕獲,這段程式碼在Android6.0(不包括6.0)以下的手機上執行沒有問題,但是Android6.0增加了許可權管理,也即執行時許可權(參考and

解決方法:Mac Android studio 建立專案是下載gradle一直返回

1,用android studio 建立專案,會一直停留在建立的進度條狀態,一個多小時也沒完成; 2,用 活動監視器 強制退出android studio, 開啟剛才建立的那個專案裡的 gradle–>wrapper–>gradle-wrapper.proper

今天面試問了一道題。說一串字符串由這幾個符號組成"<>{}[]()”,寫一個算法,例如如果組成方式為“<>{[]}{}()”這種,也就是XML格式那種則返回true。否則返回false

length 分享 void ges 調用 new sta image package 原創 今天面試問了一道題。說一串字符串由這幾個符號組成"<>{}[]()”,寫一個算法,例如如果組成方式為“<>{[]}{}()”這種,也就是XML格式那種則返回

#51CTO學院四周年# 原來你一直

學院 4周年 現在一直都在講終身學習,怎麽終身學習? 側過身子,讓我悄悄告訴你一個訣竅:找51CTO呀! 其實上面的不是廣告,而是真的,在51CTO你就可以實現終身學習的目標,這兒基本上包括了你需要的行業和專業的講師,內容。 互聯網的快速發展,特別是在線教育的快速發展,51C

Android中點擊物理返回按鍵(再按一次退出程序)

mil ket cati action androi 物理 show contex pri private long exitTime = 0;@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {

php 反序列化返回false解決方法

反序 blog $2 序列化 nbsp post 序列 php replace function mb_unserialize($serial_str) { $serial_str= preg_replace(‘!s:(\d+):"(.*?)";

js中sum(2)(3)(4)返回9和sum(2,3)和sum(2)(3)返回5並要求擴展性

lang itl ron var 就會 bsp tle 關於 網上 網上有很多關於sum(1)(2)(3),sum(1,2,3)之類的面試題要求輸出相同的結果6並要求可以滿足擴展,即有多個參數時也能符合題設的要求,所以自己寫了部分例子可以大概滿足這些面試題的要求 <!

php fopen函數返回false

apach linux 權限 只讀 isa color pen als vim 發現 使用yum安裝的apache2.4.6 php 7.2.2 正確安裝後使用fopen()函數打開文件時返回false 百度一下又三種原因 1、目錄或者文件夾權限原因 (可以用

php curl返回false----curl調用微信創建自定義菜單返回false

php curl返回false curl函數 在調用微信公眾平臺的創建自定義菜單接口來創建自定義菜單時遇到一個大坑,php curl返回false一直無法調試通過,代碼如下: > //創建菜單public function menu_create($data){$url =" htt

file_put_contents執行返回false,file_put_contents false(linux服務器httpd)

bsp 關閉selinux lin sys chcon stat CI 返回 sel file_put_contents執行返回false,file_put_contents false(linux服務器httpd) 默認下selinux是開啟的查看SELinux狀

數字復活:雖然肉體消弭,但你一直

來看 tran bottom 聊天工具 得到 未來 最好 目的 計算機 我們一直在嘗試著永生、嘗試著復活,卻怎麽也破除不了天然的生物屬性:細胞要衰老、臟器功能要衰竭。至少到目前為止,無論人類怎麽折騰,仍然是免不了一死。換個角度來講,如果要復活或者永生,我們一定需要那具肉體嗎

打造最受企業歡迎的iOS開發者: 一直存在的問題,什麽樣的員工最受企業歡迎? 一直也有人在努力

afnetwork 啟動 sub 交互 外部 set 有變 備註 super 打造最受企業歡迎的iOS開發者: 一直都存在的問題,什麽樣的員工最受企業歡迎? 一直也有人在努力提升自己,成為受企業歡迎的員工 然而,我們應該往方向去提升自己呢? 88家知名企業今年來iOS面試題

$(this).form("validate") 始終返回false

解決 插件 bsp 網址 一起 htm 更新 eset datebox onsubmit 提交前觸發,返回 false 來阻止提交動作。 validate 進行表單字段驗證,當全部字段都有效時返回 true 。該方法和 validatebox 插件一起使用。 解決:註釋

vue2.0 element-ui中el-upload的before-upload方法返回false時submit()不生效解決方法

tip child 是我 pre gre 調用 2.0 技術 lis 我要實現的功能是在上傳文件之前校驗是否表格中存在重復的數據,有的話,需要彈窗提示是否覆蓋,確認之後繼續上傳,取消之後,就不再上傳。 項目中用的element-ui是V1.4.3 <el-upload

怎麽讓 Android 程序一直後臺運行,像 QQ 一樣不被殺死

著作權 RoCE 就是 自己 檢查 ble 技術 來源 進程守護 轉自:https://blog.csdn.net/javazejian/article/details/52709857 作者:閉關寫代碼鏈接:https://www.zhihu.com/questi

Mac android studio 一直卡在Gradle:Build Running的解決辦法

1.找到路徑/Users/michael/.gradle/wrapper/dists/gradle-4.1-all/bzyivzo6n839fup2jbap0tjew,在此資料夾下有一個gradle版本資料夾,開啟後是一個名字很長的資料夾,例如我的/Users/michael/.gradle/wrapper/

android呼叫相機拍照返回的照片大小太小,變得模糊

1、使用相機拍照預設情況下呼叫相機的方式: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, CAMERA_REQUEST_CODE);//CAMERA_REQ

Android 標題欄新增返回按鈕及響應

在Activity的onCreate方法中新增如下程式碼: ActionBar actionBar = getSupportActionBar(); if(actionBar != null){ actionBar.setHomeButtonEnabled(true); acti

android studio 一直在 svn performing vcs refresh

這幾天公司的SVN換了伺服器, 我們使用的android studio 也更新了, 然後提交程式碼就一直在refresh當中,較之前彷彿慢了一個世紀…….. 使得我們使用svn客戶端直接在電腦硬碟目錄下面去提交。 後面終於通過清除重連結又好了!下面是步驟: 1、進入Setting—->Su