触摸编辑时,Android 键盘视图位于 EditText 前面

Posted

技术标签:

【中文标题】触摸编辑时,Android 键盘视图位于 EditText 前面【英文标题】:Android keypad view is in front of the EditText when touched to edit 【发布时间】:2014-06-25 14:47:02 【问题描述】:

在图像 1 上,我有一个带有一些 textview 和 edittext 控件的布局,当用户触摸此特定布局的任何 EditText(其他活动没有此问题)时,键盘出现在 EditText 控件的前面,因此用户不能看看他在写什么,这很奇怪,图 2 显示了问题。这是我的 XML:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_
        android:layout_ >

        <EditText
            android:id="@+id/responsavelContratadaDiarioEditar"
            android:layout_
            android:layout_
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/TextView71"
            android:layout_marginBottom="10dp"
            android:ems="10"
            android:imeOptions="actionDone"
            android:singleLine="true" >

            <requestFocus />
        </EditText>

        <Button
            android:id="@+id/dataVistoriaDiarioEditar"
            android:layout_
            android:layout_
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/responsavelContratadaDiarioEditar"
            android:text="Data da Vistoria" />

        <TextView
            android:id="@+id/TextView81"
            android:layout_
            android:layout_
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/dataVistoriaDiarioEditarTexto"
            android:text="Ponto de Controle"
            android:textSize="18sp"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/pontoControleDiarioEditar"
            android:layout_
            android:layout_
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/TextView81"
            android:layout_weight="0.56"
            android:ems="10"
            android:gravity="top"
            android:imeOptions="actionDone"
            android:inputType="textMultiLine"
            android:maxLines="10"
            android:scrollbars="vertical"
            android:singleLine="false" />

        <TextView
            android:id="@+id/TextView71"
            android:layout_
            android:layout_
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/projeto_spinnerDiarioEditar"
            android:text="Responsável contratada"
            android:textSize="18sp"
            android:textStyle="bold" />

        <Spinner
            android:id="@+id/projeto_spinnerDiarioEditar"
            android:layout_
            android:layout_
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/textView11"
            android:spinnerMode="dialog" />

        <TextView
            android:id="@+id/textView11"
            android:layout_
            android:layout_
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginTop="14dp"
            android:text="Projeto"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textSize="18sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/dataVistoriaDiarioEditarTexto"
            android:layout_
            android:layout_
            android:layout_alignBottom="@+id/dataVistoriaDiarioEditar"
            android:layout_toRightOf="@+id/dataVistoriaDiarioEditar"
            android:clickable="false"
            android:text="23/12/1989" />

    </RelativeLayout>

</LinearLayout>

谢谢。

【问题讨论】:

Android soft keyboard covers edittext field 的可能重复项 @Setu 这个主题的答案都没有帮助我 好的,那么@crawletas 你可能想考虑你可以做些什么来让你的布局按照你的意愿工作。首先我会问,当您只有一个孩子用于 LinearLayout 时,为什么需要 LinearLayout 和 RelativeLayout?将 RelativeLayout 设为您的父布局并再次尝试这些解决方案。 【参考方案1】:

&lt;activity&gt; 下的清单文件中使用以下属性:

        android:windowSoftInputMode="adjustPan"

【讨论】:

@crawletas 你也试过“adjustResize”吗?或者您可能同时需要“adjustPan|adjustResize”。【参考方案2】:

在您的清单文件中使用该活动名称下的任何一个。

<activity android:windowSoftInputMode="adjustResize" /> <activity android:windowSoftInputMode="adjustPan" />

【讨论】:

【参考方案3】:

我在我的 onCreate() 方法中添加了这段代码,在 setContentView 之后它起作用了 :)

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

谢谢。

【讨论】:

有人给了你一个有效的答案,然后你创建了自己的答案并接受它作为一个有效的答案......

以上是关于触摸编辑时,Android 键盘视图位于 EditText 前面的主要内容,如果未能解决你的问题,请参考以下文章

解除键盘后,带有所选文本的UITextView不响应触摸

android中的虚拟键盘问题

键盘快速出现时文本视图向上

使用多个视图/布局时在 Android 中处理触摸事件

当用户触摸视图时关闭键盘

单击或触摸另一个视图时清除EditText焦点并隐藏键盘