現(xiàn)在大部分的手機(jī)都沒有底部虛擬導(dǎo)航鍵了铝条,但是還是有些手機(jī)廠商依然在發(fā)布帶虛擬導(dǎo)航鍵的手機(jī),既然有席噩,開發(fā)者就得去適配班缰,我遇到比較麻煩的一個(gè)問題是獲取屏幕(除了虛擬導(dǎo)航鍵以外的內(nèi)容顯示區(qū)域)高度(content),當(dāng)時(shí)想著監(jiān)聽導(dǎo)航鍵的顯示\隱藏悼枢。但是沒有找到有效的方法埠忘。只能轉(zhuǎn)變思路,通過獲取content的高度來判斷是否有導(dǎo)航鍵,然后根據(jù)content的高度變化來動(dòng)態(tài)計(jì)算某些控件的高度莹妒。
在此說明一下名船,通過以下方法在帶導(dǎo)航鍵的手機(jī)上是有缺陷的,導(dǎo)航鍵顯示\隱藏獲取的高度是不會(huì)跟著變化的旨怠。
下面貼上我的實(shí)現(xiàn)方法:
View decorView = getWindow().getDecorView();
Rect rect =new Rect();
decorView.getWindowVisibleDisplayFrame(rect);
rect.bottom就是content的高度渠驼。
通過下面的方法可以獲取是否有導(dǎo)航鍵,包括橫屏模式的獲取鉴腻,其中point獲取的高度不會(huì)隨導(dǎo)航鍵的隱藏顯示發(fā)生改變迷扇,比如1920*1080的手機(jī),point.y永遠(yuǎn)都是1920爽哎,但上面的dm.heightPixels獲取的是1920減去導(dǎo)航欄的高度蜓席,如果在當(dāng)前頁面把導(dǎo)航欄隱藏了,獲取的還是1920減去導(dǎo)航欄的高度倦青,關(guān)閉頁面再打開獲取的就會(huì)是1920了,所以說上面的方法有缺陷
decorView的使用還是很有用很強(qiáng)大的盹舞。??