[英]Hide part of activity_main.xml if keyboard is open (Android)
我在底部顯示了以下activity_main.xml 。 在那里,出現一個CoordinatorLayout
和兩個LinearLayouts
。 第一個LinearLayout1具有一個EditText
輸入一些文本,並帶有一個發送按鈕。 第二個有另外兩個按鈕。
如果我單擊EditText
,鍵盤將顯示出來,並使LinearLayout2中的所有內容幾乎不可見。 所以,我想在打開鍵盤時將兩個按鈕都隱藏在最后一個布局中。
我已經發現使用android:windowSoftInputMode="stateHidden"
可能是訣竅,但僅與AndroidManifest.xml
活動有關。 我只想在第二線性布局中使用此內部。 已經嘗試在此使用它,但沒有成功。
另外,我要在xml中處理什么並保持MainActivity代碼干凈。 有任何可能嗎?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
...
<android.support.design.widget.CoordinatorLayout>
<android.support.v7.widget.RecyclerView/>
</android.support.design.widget.CoordinatorLayout>
<LinearLayout>
<EditText/>
<Button android:id="@+id/button_send"/>
</LinearLayout>
<LinearLayout>
<Button/>
<Button/>
</LinearLayout>
</LinearLayout>
過去我們也遇到過同樣的問題,因此我們在完整布局對象上放置了一些可觀察的對象,請嘗試一下並讓我知道
/*Hide button when keyboard is open*/
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
view.getWindowVisibleDisplayFrame(r);
int heightDiff = view.getRootView().getHeight() - (r.bottom - r.top);
if (heightDiff > 244) { // if more than 100 pixels, its probably a keyboard...
//ok now we know the keyboard is up...
buttonLayout.setVisibility(View.GONE);
} else {
//ok now we know the keyboard is down...
buttonLayout.setVisibility(View.VISIBLE);
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.