- 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);
}
});
}
- 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)
也有说找到这个activity的配置文件设置这个属性android:windowSoftInputMode = “stateVisible|adjustResize”但是我的也没有效果,之后没有测试,可能是我开始没有用scrollview做顶级布局吧.如果是”adjustPan|stateHidden”则键盘弹出布局不会上移,还有其他的属性,这里就不一一例举了.
- EditText不能输入小数,只要把android:inputtype=”number”(整数),可以number改为numberDecimal即可,还有其他的edittext的设置可以参照以下网址进行动态设置