如果键盘处于打开状态,则隐藏activity_main.xml的一部分(Android)

前端之家收集整理的这篇文章主要介绍了如果键盘处于打开状态,则隐藏activity_main.xml的一部分(Android)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在底部显示了以下activity_main.xml.在那里,出现CoordinatorLayout和两个LinearLayout.第一个LinearLayout1有一个EditText来输入一些文本,并带有一个发送它的按钮.第二个有另外两个按钮.

如果我单击EditText,键盘显示并使LinearLayout2中的所有内容几乎不可见.所以,我想在键盘打开时隐藏最后一个布局中的两个按钮.

我已经发现使用android:windowSoftInputMode =“stateHidden”可能是技巧,但只与AndroidManifest.xml中的活动有关.我只想用这个内部的第二个线性布局.已经尝试过在那里使用它,但没有成功.

另外,我在我的xml中处理这个问题并保持我的MainActivity代码干净.这有可能吗?

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
  3. ...
  4. <android.support.design.widget.CoordinatorLayout>
  5. <android.support.v7.widget.RecyclerView/>
  6. </android.support.design.widget.CoordinatorLayout>
  7.  
  8. <LinearLayout>
  9. <EditText/>
  10. <Button android:id="@+id/button_send"/>
  11. </LinearLayout>
  12.  
  13. <LinearLayout>
  14. <Button/>
  15. <Button/>
  16. </LinearLayout>
  17.  
  18. </LinearLayout>
我们过去有同样的问题,所以我们在完整的布局对象上放了一些observable
试试这个让我知道
  1. /*Hide button when keyboard is open*/
  2. view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
  3. @Override
  4. public void onGlobalLayout() {
  5. Rect r = new Rect();
  6. view.getWindowVisibleDisplayFrame(r);
  7.  
  8. int heightDiff = view.getRootView().getHeight() - (r.bottom - r.top);
  9.  
  10. if (heightDiff > 244) { // if more than 100 pixels,its probably a keyboard...
  11. //ok now we know the keyboard is up...
  12. buttonLayout.setVisibility(View.GONE);
  13.  
  14.  
  15. } else {
  16. //ok now we know the keyboard is down...
  17. buttonLayout.setVisibility(View.VISIBLE);
  18.  
  19.  
  20. }
  21. }
  22. });

猜你在找的XML相关文章