软键盘覆盖EditText字段android

时间:2016-05-10 12:22:02

标签: android-layout scroll android-edittext soft-keyboard

我在布局文件中有多个编辑文本,软键盘覆盖了一些编辑文本。如果用户点击第一个编辑文本,我想要整个编辑文本向上滚动,以便所有字段一次都可见。我尝试在xml文件中添加ScroolView,isScrollContainer,orientation:vertical,requestFocus,android:imeOptions =“flagNoFullscreen”,并在Manifest中添加android:windowSoftInputMode =“adjustPan | adjustResize”。但没有得到预期的结果。 这是我的xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:background="@drawable/register_back"
tools:context="com.example.RegisterActivity">
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/registerFieldsRL"
    android:layout_marginTop="40dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/header"
        android:text="Register"
        android:textAllCaps="true"
        android:textColor="#646b99"
        android:textSize="18dp"
        android:gravity="center"
        android:layout_centerHorizontal="true" />
    <EditText
        android:id="@+id/nameET"
        android:hint="Enter Your Name"
        android:layout_below="@+id/header"
        style="@style/editTextStyle"
        android:layout_marginTop="10dp"
        android:singleLine="true"/>
    <EditText
        android:id="@+id/emailET"
        android:hint="Enter Your Email Id"
        android:layout_below="@+id/nameET"
        style="@style/editTextStyle"
        android:layout_marginTop="5dp"
        android:singleLine="true"/>

    <EditText
        android:id="@+id/mobileET"
        android:hint="Enter Your Mobile Number"
        android:layout_below="@+id/emailET"
        style="@style/editTextStyle"
        android:layout_marginTop="5dp"
        android:singleLine="true"/>
    <EditText
        android:id="@+id/passwordET"
        android:hint="Enter Password"
        android:layout_below="@+id/mobileET"
        style="@style/editTextStyle"
        android:layout_marginTop="5dp"
        android:singleLine="true"/>
    <EditText
        android:id="@+id/confrm_passwordET"
        android:hint="Re-enter Password"
        android:layout_below="@+id/passwordET"
        style="@style/editTextStyle"
        android:layout_marginTop="5dp"
        android:singleLine="true"/>
    <Button
        android:layout_width="200dp"
        android:layout_height="40dp"
        android:id="@+id/logon_button"
        android:text="Logon"
        android:gravity="center"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/confrm_passwordET"
        android:layout_marginTop="7dp"
        android:background="#db96a3"
        android:textColor="#e8d3c1"/>
</RelativeLayout>
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/social_loginsRL"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="30dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/social_login_header"
        android:text="- OR LOGIN WITH -"
        android:layout_centerHorizontal="true"
        android:textColor="#646b99"
        android:textSize="18dp"/>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_below="@+id/social_login_header"
        android:layout_marginTop="10dp">
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/facebook_button"
            android:background="@drawable/fbbutton"
            android:layout_toLeftOf="@+id/social_login_split_view"/>

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_centerHorizontal="true"
            android:id="@+id/social_login_split_view"></View>
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/gmail_button"
            android:background="@drawable/gmailbutton"
            android:layout_toRightOf="@+id/social_login_split_view" />
    </RelativeLayout>

</RelativeLayout>

这是我的样式代码

<style name="editTextStyle">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:background">@drawable/edittext_background</item>
    <item name="android:gravity">center_horizontal</item>
    <item name="android:backgroundTint">#e8d3c1</item>
    <item name="android:textColor">#646b99</item>
</style>

这是我的Drawable文件

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

     <item android:drawable="@drawable/patient_details_et_background"/>
     <item>
      <shape>
        <stroke
            android:width="1dp"
            android:color="#d4c6c1" />
         <padding
             android:left="10dp"
             android:top="10dp"
             android:right="10dp"
             android:bottom="10dp" />
        </shape>
     </item>
    </selector>

1 个答案:

答案 0 :(得分:0)

Tara,根据我的理解你的问题,(也许我错了)你希望你的布局中的所有编辑文本都向上滚动并在你收到任何EditText的点击时聚焦?

假设你的布局中有10个EditText,用户点击第一个,如果所有EditText向上滚动,用户点击的项目也会从焦点移动。这对用户来说不太好,因为他们无法在他们点击的实际字段上进行编辑。

至于问题,我想把你所有的EditText放在一个ScrollView中,并在滚动视图上放置一个属性,android:fillViewport =“true”。这不会解决问题,但您可以在预览窗格的滚动视图中查看完整长度和项目。

软关键字一旦弹出就会覆盖屏幕的某些区域,但您应该确保用户可以滚动布局中的每个视图。