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

Jan*_*Jan 10 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>
Run Code Online (Sandbox Code Playgroud)

主Activity类只需要显示布局.当我启动程序并点击EditText时,会出现虚拟键盘,但EditText字段已消失.

也许RelativeLayout导致问题,但我不知道如何使用另一个Layout类重现相同的布局.

欢迎任何建议,非常感谢您的帮助.

谢谢.

编辑:

这里有两个截图,一个显示底部的EditText没有虚拟键盘,一个显示虚拟键盘,但没有EditText.有趣的是,SurfaceView和EditText实际上向上移动,EditText就消失了.顺便说一句,如果它位于EditText旁边,也会发生这种情况.

SurfaceView下面的EditText(左); EditText消失了(右)

Tho*_*nan 8

作为关于这个bug建议的帖子的评论者,通过设置SurfaceViewGLSurfaceView透明的背景颜色来解决这个问题非常容易mSurfaceView.setBackgroundColor(Color.TRANSPARENT);.

EditText在Samsung Galaxy Tab 10.1上按下Honeycomb(v13)时,会出现此问题.问题是,在GLSurfaceView调整大小后,它的位置仍然是一个黑色矩形,覆盖了EditText.该解决方案通过使错误的矩形透明来工作,因此EditText可以看到.

  • 非常感谢,我希望我能+100! (2认同)