我在底部显示了以下activity_main.xml.在那里,出现CoordinatorLayout和两个LinearLayout.第一个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>
我们过去有同样的问题,所以我们在完整的布局对象上放了一些observable
试试这个让我知道
试试这个让我知道
/*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); } } });