Android 调整键盘上方的相对长度

Android 调整键盘上方的相对长度,android,Android,我有以下.xml文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_layout" android:layout_width="match_parent" android:layout_height="match_parent" android

我有以下
.xml
文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/grey_100"
android:orientation="vertical"
android:weightSum="4">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="3"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/login_logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/welcome_bottom_margin"
        android:layout_marginTop="@dimen/login_logo_margin_top"
        android:theme="@style/ThemeOverlay.MyTitleText"
        app:srcCompat="@mipmap/ic_launcher" />

    <TextView
        android:id="@+id/status"
        style="@style/ThemeOverlay.MyTextDetail"
        android:text="@string/signed_out" />

</LinearLayout>


<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="@color/grey_300"
    android:gravity="center_vertical">

    <LinearLayout
        android:id="@+id/email_password_fields"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="16dp"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:paddingRight="16dp">

        <EditText
            android:id="@+id/field_email"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="@string/hint_email"

            android:inputType="textEmailAddress" />

        <EditText
            android:id="@+id/field_password"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="@string/hint_password"
            android:inputType="textPassword" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/email_password_buttons"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/email_password_fields"
        android:orientation="horizontal"
        android:paddingLeft="16dp"
        android:paddingRight="16dp">

        <Button
            android:id="@+id/email_sign_in_button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/sign_in"
            android:theme="@style/ThemeOverlay.MyDarkButton" />

        <Button
            android:id="@+id/email_create_account_button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/create_account"
            android:theme="@style/ThemeOverlay.MyDarkButton" />

    </LinearLayout>      

</RelativeLayout>

</LinearLayout>
我得到以下结果:

.

添加

android:windowSoftInputMode="adjustResize" 
在活动标签的清单中添加

android:windowSoftInputMode="adjustResize" 

在活动标签的清单中使用
使用
只需在活动中添加这行代码即可:

<activity
  android:windowSoftInputMode="adjustResize" 
  android:name=".youractivity" 
  />

只需在活动中添加这行代码:

<activity
  android:windowSoftInputMode="adjustResize" 
  android:name=".youractivity" 
  />

在AndroidManifest.xml中为您的活动设置softInputMode

<activity
  android:windowSoftInputMode="adjustResize" 
  android:name=".MyActivity" 
  />

并将xml替换为以下代码:

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

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/login_logo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="@dimen/welcome_bottom_margin"
                android:layout_marginTop="@dimen/login_logo_margin_top"
                android:theme="@style/ThemeOverlay.MyTitleText"
                app:srcCompat="@mipmap/ic_launcher" />

            <TextView
                android:id="@+id/status"
                style="@style/ThemeOverlay.MyTextDetail"
                android:text="@string/signed_out" />

        </LinearLayout>

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="3"
            android:background="@color/grey_300"
            android:gravity="center_vertical">

            <LinearLayout
                android:id="@+id/email_password_fields"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:paddingLeft="16dp"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:paddingRight="16dp">

                <EditText
                    android:id="@+id/field_email"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:hint="@string/hint_email"

                    android:inputType="textEmailAddress" />

                <EditText
                    android:id="@+id/field_password"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:hint="@string/hint_password"
                    android:inputType="textPassword" />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/email_password_buttons"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/email_password_fields"
                android:orientation="horizontal"
                android:paddingLeft="16dp"
                android:paddingRight="16dp">

                <Button
                    android:id="@+id/email_sign_in_button"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="@string/sign_in"
                    android:theme="@style/ThemeOverlay.MyDarkButton" />

                <Button
                    android:id="@+id/email_create_account_button"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="@string/create_account"
                    android:theme="@style/ThemeOverlay.MyDarkButton" />

            </LinearLayout>

        </RelativeLayout>

    </LinearLayout>

</ScrollView>

在AndroidManifest.xml中为您的活动设置softInputMode

<activity
  android:windowSoftInputMode="adjustResize" 
  android:name=".MyActivity" 
  />

并将xml替换为以下代码:

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

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/login_logo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="@dimen/welcome_bottom_margin"
                android:layout_marginTop="@dimen/login_logo_margin_top"
                android:theme="@style/ThemeOverlay.MyTitleText"
                app:srcCompat="@mipmap/ic_launcher" />

            <TextView
                android:id="@+id/status"
                style="@style/ThemeOverlay.MyTextDetail"
                android:text="@string/signed_out" />

        </LinearLayout>

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="3"
            android:background="@color/grey_300"
            android:gravity="center_vertical">

            <LinearLayout
                android:id="@+id/email_password_fields"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:paddingLeft="16dp"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:paddingRight="16dp">

                <EditText
                    android:id="@+id/field_email"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:hint="@string/hint_email"

                    android:inputType="textEmailAddress" />

                <EditText
                    android:id="@+id/field_password"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:hint="@string/hint_password"
                    android:inputType="textPassword" />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/email_password_buttons"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/email_password_fields"
                android:orientation="horizontal"
                android:paddingLeft="16dp"
                android:paddingRight="16dp">

                <Button
                    android:id="@+id/email_sign_in_button"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="@string/sign_in"
                    android:theme="@style/ThemeOverlay.MyDarkButton" />

                <Button
                    android:id="@+id/email_create_account_button"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="@string/create_account"
                    android:theme="@style/ThemeOverlay.MyDarkButton" />

            </LinearLayout>

        </RelativeLayout>

    </LinearLayout>

</ScrollView>


将权重交换为适用于我的电子邮件字段的
LinearLayout=“1”
ScrollView=“3”
,但当我单击密码字段时,它会像以前一样将按钮一分为二。朋友,不要对嵌套视图使用权重。例如,您为嵌套按钮和EditTextsOk使用了权重,但无论如何都不能为
LinearLayout
s设置权重,对吗?无法理解!:(将权重交换为
LinearLayout=“1”
ScrollView=“3”
这适用于我的电子邮件字段,但当我单击我的密码字段时,它会像以前一样将按钮一分为二。朋友,不要对嵌套视图使用权重。例如,你对嵌套按钮和EditTextsOk使用了权重,但不能为
线性布局设置权重,对吗?无法理解!:(