当虚拟键盘出现时,EditText 有时会超出屏幕

发布于 2024-11-01 17:25:29 字数 2220 浏览 4 评论 0原文

我正在开发一个 Android 应用程序。

我有一个简单的布局。顶部有一个 CheckBox、一个 Spinner 和一个 Button,底部有一个两行 EditText,当选中 CheckBox 时显示,另一个 EditText 覆盖中间的其余空间。

问题是,当我在大的 EditText 上书写时,有时布局会超出屏幕顶部,因此我看不到我在写的内容。

作为解决方案,我可以将布局设置为在键盘显示时调整大小(在 manifest.xml 上使用 android:windowSoftInputMode="adjustResize" ),但这不会很好,因为我不希望 2 个 EditText 共享剩余的空间在屏幕上。

我的布局代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Button android:id="@+id/button"
        android:text="Push"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content" 
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"/>
    <CheckBox android:id="@+id/check_box"
        android:text="Check"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true" />
    <Spinner android:id="@+id/spinner"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />   
    <EditText android:id="@+id/text_2"
        android:hint="@string/hint_2"
        android:inputType="textMultiLine"
        android:maxLines="2"
        android:gravity="top"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_alignParentBottom="true"
        android:visibility="gone" />    
    <EditText android:id="@+id/text_1"
        android:hint="@string/hint_1"
        android:inputType="textMultiLine"
        android:gravity="top"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_below="@id/spinner"
        android:layout_above="@id/text_2"
        android:layout_alignWithParentIfMissing="true" />
</RelativeLayout>

PS 这种情况只发生在我的 Wildfire 上,在模拟器上很少见。朋友的Desire HD一点问题都没有。我不知道这是否有什么区别...

提前感谢您的帮助。

安东尼斯

I am developing an application for Android.

I have a simple layout. A CheckBox, a Spinner and a Button at the top, a two line EditText at the Bottom which is displayed when the CheckBox is checked and another EditText which covers the rest of the space in the middle.

The problem is that when I am writing on the big EditText, sometimes the layout goes out of the screen on top and as a result I can't see what I am writing.

As a solution, I can set my layout to resize when the keyboard shows (using android:windowSoftInputMode="adjustResize" on the manifest.xml) but that won't be good since I do not want the 2 EditTexts to share the space left on the screen.

My layout code follows:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Button android:id="@+id/button"
        android:text="Push"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content" 
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"/>
    <CheckBox android:id="@+id/check_box"
        android:text="Check"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true" />
    <Spinner android:id="@+id/spinner"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />   
    <EditText android:id="@+id/text_2"
        android:hint="@string/hint_2"
        android:inputType="textMultiLine"
        android:maxLines="2"
        android:gravity="top"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_alignParentBottom="true"
        android:visibility="gone" />    
    <EditText android:id="@+id/text_1"
        android:hint="@string/hint_1"
        android:inputType="textMultiLine"
        android:gravity="top"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_below="@id/spinner"
        android:layout_above="@id/text_2"
        android:layout_alignWithParentIfMissing="true" />
</RelativeLayout>

P.S. This thing happens only on my Wildfire and very rare on the Emulator. A friend's Desire HD didn't have any problem at all. I don;t know if this makes any difference...

Thanks in advance for your help.

Antonis

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

山川志 2024-11-08 17:25:29

我有完全相同的问题。我已经测试过,这只发生在 EditText 处于多行模式且 SoftInputMode 设置为 adjustmentPan 时。这很可能是 Android 的错误。

我找到的唯一解决方案是删除 adjustmentPan。

I have the exact same problem. I've tested and this only happens with EditText in multiline mode and when SoftInputMode is set to adjustPan. This is most probably an Android bug.

The only solution I've found is to remove adjustPan.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文