当显示虚拟键盘并涉及SurfaceView时,将隐藏Android的EditText

时间:2010-06-04 22:51:38

标签: android surfaceview

我有一个简单的用户界面: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)

4 个答案:

答案 0 :(得分:8)

作为thread about this bug建议的评论者,通过将SurfaceViewGLSurfaceView的背景颜色设置为透明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

相关问题