10

我有一个简单的用户界面: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 旁边,这也会发生在按钮上。

SurfaceView 下方的 EditText(左);EditText 不见了(右)

4

4 回答 4

8

正如有关此错误的线程SurfaceView中的评论者所建议的那样,通过将或的背景颜色设置GLSurfaceView为透明也很容易解决此问题mSurfaceView.setBackgroundColor(Color.TRANSPARENT);

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

于 2012-08-05T15:15:40.733 回答
2

在您的 AndroidManifest.xml 中为您的活动添加以下代码 android:windowSoftInputMode="adjustPan"

于 2013-09-08T14:47:37.640 回答
0

是的,它是正确的!在您的 AndroidManifest.xml 中为您的活动添加以下代码android:windowSoftInputMode="adjustPan"

在您的编辑文本中,只需添加:

android:imeOptions="flagNoFullscreen"
于 2015-06-12T10:48:58.650 回答
0

我发现它在不同的设备上有不同的结果,然后我使用 ScrollView 作为根视图并将布局放入 ScrollView,当使用全屏模式时它可以正常工作。如果您仍然有问题,请务必设置 android:fillViewport="true" 让我知道 liananse@163.com

于 2015-10-21T09:22:51.937 回答