1. 程式人生 > >軟鍵盤彈出+popupWindow的問題

軟鍵盤彈出+popupWindow的問題

  1. popupWindow上有輸入框,我希望在軟體盤彈出的時候popupWindow可以上移,蒐集了很多資料,有的說通過螢幕的大小減去Activity顯示的大小,就是鍵盤的高度,然後動態設定popupWindow的大小,但是沒有實現.因為popupWindow的大小就是螢幕的大小,所以此時Activity顯示的大小就是0.
/**
 2. 獲取鍵盤的高度,設定scrollview的大小
*/
public void setScrollViewHight() {
    ll_root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        /**
         * the result is pixels
         */
@Override public void onGlobalLayout() { Rect r = new Rect(); //獲取可見高度 int visiableHeight = r.bottom - r.top; LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) myScrool.getLayoutParams(); //獲取當前控制元件的佈局物件 params.height = visiableHeight;//設定當前控制元件佈局的高度
myScrool.setLayoutParams(params);//將設定好的佈局引數應用到控制元件中 ll_root.getWindowVisibleDisplayFrame(r); int screenHeight = ll_root.getRootView().getHeight(); int heightDifference = screenHeight - visiableHeight; Log.e("可見高度是", visiableHeight + ""); Log.e("Keyboard Size"
, "Size:" + heightDifference); //boolean visible = heightDiff > screenHeight / 3; } }); }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

所以我使用了另一種方式,就是設定popupWindow的屬性,據說這兩個屬性的位置不可以變,我沒有測試,但是設定之後也沒其效果,之後我就通過問一些大神知道了popupWindow必須被scrollview包裹才行,不然不可以彈出.

menuWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
                menuWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
  • 1
  • 2

也有說找到這個activity的配置檔案設定這個屬性android:windowSoftInputMode = “stateVisible|adjustResize”但是我的也沒有效果,之後沒有測試,可能是我開始沒有用scrollview做頂級佈局吧.如果是”adjustPan|stateHidden”則鍵盤彈出佈局不會上移,還有其他的屬性,這裡就不一一例舉了.

  1. EditText不能輸入小數,只要把android:inputtype=”number”(整數),可以number改為numberDecimal即可,還有其他的edittext的設定可以參照以下網址進行動態設定