我有一个简单的用户界面:EditText应位于SurfaceView下方。 我使用RelativeLayout来安排这两个视图。
现在,当我点击EditText打开虚拟键盘时,SurfaceView会向上滑动,但EditText会被隐藏,并且不显示键入的字符串。
要重现,请使用以下布局XML代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout01"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<SurfaceView
android:id="@+id/SurfaceView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</SurfaceView>
<EditText
android:id="@+id/EditText01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:selectAllOnFocus="true"
android:textStyle="normal"
android:singleLine="true">
</EditText>
</RelativeLayout>
主Activity类只需要显示布局。当我启动程序并点击EditText时,会出现虚拟键盘,但EditText字段已消失。
也许RelativeLayout导致问题,但我不知道如何用另一个Layout类重现相同的布局。
欢迎任何建议,非常感谢您的帮助。
感谢。
编辑:
这是两个屏幕截图,一个显示底部没有虚拟键盘的EditText,一个显示虚拟键盘但没有EditText。有趣的是,SurfaceView和EditText实际上向上移动,EditText就消失了。顺便说一下,如果它位于EditText旁边,也会发生这种情况。
EditText below a SurfaceView (left); EditText is gone (right)
答案 0 :(得分:8)
作为thread about this bug建议的评论者,通过将SurfaceView
或GLSurfaceView
的背景颜色设置为透明mSurfaceView.setBackgroundColor(Color.TRANSPARENT);
,可以很容易地解决此问题。好。
在Samsung Galaxy Tab 10.1上按下Honeycomb(v13)上的EditText
时,会出现此问题。问题是在GLSurfaceView
调整大小之后,它的位置仍然是一个覆盖EditText
的黑色矩形。该解决方案的工作原理是使错误的矩形透明,因此可以看到EditText
。
答案 1 :(得分:1)
在AndroidManifest.xml中添加活动的以下代码
android:windowSoftInputMode="adjustPan"
答案 2 :(得分:0)
是的,没错!
在AndroidManifest.xml android:windowSoftInputMode="adjustPan"
在您的编辑文字中,只需添加:
android:imeOptions="flagNoFullscreen"
答案 3 :(得分:0)
我发现它在不同的设备上有不同的结果,然后我使用ScrollView作为根视图并将布局放入ScrollView,当使用fullScreen模式时它工作正常。并确保设置android:fillViewport =&#34; true&#34;如果你还有问题请告诉我liananse@163.com