3 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
是的,您可以在Viewtree Observer和全局布局偵聽器的幫助下,嘗試以下提到的步驟
獲取布局的根視圖
獲取此根的Viewtree觀察器,并在此之上添加全局布局偵聽器。
現(xiàn)在,無(wú)論何時(shí)顯示軟鍵盤,Android都會(huì)重新調(diào)整屏幕大小,您將在監(jiān)聽器上收到呼叫。這就是現(xiàn)在唯一需要做的就是計(jì)算重新調(diào)整大小后根視圖與原始大小之間的高度差。如果差異大于150,則認(rèn)為這是因?yàn)殒I盤已膨脹。
以下是示例代碼
root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){
public void onGlobalLayout(){
int heightDiff = root.getRootView().getHeight()- root.getHeight();
// IF height diff is more then 150, consider keyboard as visible.
}
});
問(wèn)候,Techfist

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
我為此嘗試了許多建議的方法,但似乎沒(méi)有一種方法適用于Android SDL。我認(rèn)為這是因?yàn)镾DL顯示是“全屏”,還是因?yàn)樗挥凇?AbsoluteLayout”中,因此“視圖”的高度從未真正改變過(guò)。這種方法對(duì)我有用:
mRootWindow = getWindow();
mRootView = mRootWindow.getDecorView().findViewById(android.R.id.content);
mRootView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout(){
Rect r = new Rect();
View view = mRootWindow.getDecorView();
view.getWindowVisibleDisplayFrame(r);
// r.left, r.top, r.right, r.bottom
}
});
- 3 回答
- 0 關(guān)注
- 405 瀏覽
添加回答
舉報(bào)