[英]Part of custom Android view for IME being cut off?
我正在为Android输入IME,为此,我创建了一个自定义视图。
我在这样的XML文件中设置视图:
<com.paldepind.mykeyboard.KeyboardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent"
/>
我希望视图是屏幕高度的40%。 因此,在我的自定义视图中,我将覆盖视图具有的onMeasure
方法:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = (int) (View.MeasureSpec.getSize(heightMeasureSpec) * .4);
setMeasuredDimension(widthMeasureSpec,
View.MeasureSpec.makeMeasureSpec(height,
View.MeasureSpec.EXACTLY));
}
在电话上查看时,屏幕上的视图正确地开始向下60%的位置,但随后将其截断了一点,如下面的屏幕截图所示。
如果我将上面代码中的.4
更改为1
则视图确实会按预期填满整个屏幕。 似乎数字越小,被截断的视图越多。
我真的不知道为什么这行不通。 任何帮助深表感谢!
似乎onMeasure
方法由于某种原因而被调用了两次。 第一次将heightMeasureSpec
参数等于屏幕尺寸,第二次将该参数设置为视图的heightMeasureSpec
设置的高度。 因此,视图最终仅是屏幕尺寸40%的40%。
我通过在onMeasure
方法调用中获取屏幕尺寸来解决此问题:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int height = (int) (size.y * .4);
setMeasuredDimension(widthMeasureSpec,
View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY));
}
尝试将键盘视图放入相对布局中。 也许可以解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.