Android:键入时保持TextInputEditText在视图中

时间:2018-11-12 17:39:46

标签: android xml android-layout mobile android-softkeyboard

我正在尝试使用两个TextInputEditText元素创建一个活动。它们被放置在页面的大约中间位置,导致它们在出现时被键盘覆盖。因此,我尝试使用windowSoftInputMode="adjustPan"内的AppManifest.xml滚动屏幕,以使键入时保持文本框处于可见状态。

但是,所有尝试都失败了。下面是我正在使用的布局层次结构,下面是一些我已经尝试无济于事的解决方案示例。

布局xml

<ScrollView
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillViewport="true"
    android:isScrollContainer="false">

    <android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.TextInputLayout
            android:id="@+id/inputA"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/inputAText"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:id="@+id/inputB"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/inputBText"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

        </android.support.design.widget.TextInputLayout>

   </android.support.constraint.ConstraintLayout>

</ScrollView>

AndroidManifest.xml代码段

<activity
    android:name=".activities.MyActivity"
    android:windowSoftInputMode="adjustPan"
    android:screenOrientation="sensorPortrait"
    android:theme="@style/AppTheme.NoActionBar" />

尝试的解决方案

  1. windowSoftInputMode="adjustPan"添加到activity中的相关AppManifest.xml中(根据其他StackOverflow建议,我也尝试过adjustResizeadjustPan|adjustNothing
  2. ConstraintLayout放在ScrollView
  3. android:isScrollContainer="false"添加到上述ScrollView
  4. 仅将ConstraintLayoutTextInputEditText限制在所述布局的底部来重新创建布局文件
  5. TextInputEditText更改为EditText并删除TextInputLayout
  6. ConstraintLayout更改为RelativeLayout

对于应该是一个相当简单的实现,我很茫然。任何进一步的建议表示赞赏。如有必要,我很乐意提供更多代码示例。

1 个答案:

答案 0 :(得分:2)

发现了问题!在主题中,我声明了<item name="android:windowTranslucentStatus">true</item>。由于某种原因,它中断了windowSoftInputMode="adjustPan",因此我将其删除。

为了使状态栏保持透明,我使用<item name="android:statusBarColor">@color/transparent</item>

希望有人会发现这一点有用。