键盘启动时ScrollView不起作用

时间:2017-12-21 07:24:27

标签: android android-layout

我需要在底部使用<scrollview>布局,其中包含一些EditTexts和一个线性Buttons,但问题是当软键盘输出时,布局不会't scroll它完全隐藏Buttons'线性,主线性(@+id/main)离开了屏幕!

以下是我的布局概述:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="#03A9F4"
  android:gravity="center"
  >

  <RelativeLayout
    android:id="@+id/main"
    android:layout_width="310dip"
    android:layout_height="485dip"
    android:background="#03A9F4"
    android:gravity="center">

    <RelativeLayout
      android:layout_width="match_parent"
      android:layout_height="435dip"
      android:layout_alignParentBottom="true"
      android:layout_alignParentTop="false"
      android:background="@drawable/border_signup_signin_auth">

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

        <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="70dip"
          android:orientation="vertical"
          tools:ignore="UselessLeaf">
        </LinearLayout>


        <ScrollView
          android:id="@+id/ScrollMain"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:isScrollContainer="false"
          >

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

            <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="80dip"
              android:baselineAligned="false"
              android:orientation="horizontal"
              android:paddingLeft="10dip"
              android:paddingRight="10dip">

              <LinearLayout
                android:layout_width="0dip"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:orientation="vertical"
                android:paddingEnd="5dip"
                tools:ignore="RtlSymmetry">

                <com.rengwuxian.materialedittext.MaterialEditText
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"/>
              </LinearLayout>

              <LinearLayout
                android:layout_width="0dip"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:orientation="vertical">

                <com.rengwuxian.materialedittext.MaterialEditText
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"/>
              </LinearLayout>
            </LinearLayout>

            <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="80dip"
              android:baselineAligned="false"
              android:orientation="horizontal"
              android:paddingLeft="10dip"
              android:paddingRight="10dip">

              <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:orientation="vertical"
                android:paddingEnd="5dip"
                tools:ignore="RtlSymmetry">

                <com.rengwuxian.materialedittext.MaterialEditText
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  />
              </LinearLayout>

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

                <com.rengwuxian.materialedittext.MaterialEditText
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"/>
              </LinearLayout>
            </LinearLayout>

            <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="70dip"
              android:baselineAligned="false"
              android:orientation="horizontal"
              android:paddingLeft="10dip"
              android:paddingRight="10dip">

              <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:orientation="vertical"
                android:paddingEnd="5dip"
                tools:ignore="RtlSymmetry">

                <com.rengwuxian.materialedittext.MaterialEditText
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"/>
              </LinearLayout>

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

                <com.rengwuxian.materialedittext.MaterialEditText
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  />
              </LinearLayout>
            </LinearLayout>

            <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="70dip"
              android:orientation="vertical"
              android:paddingEnd="10dip"
              tools:ignore="RtlSymmetry">

              <com.rengwuxian.materialedittext.MaterialEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                />

            </LinearLayout>

            <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="60dip"
              android:baselineAligned="false"
              android:orientation="horizontal"
              android:paddingLeft="5dip"
              android:paddingRight="5dip">

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

                <Button
                  android:id="@+id/btnSignUp"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:text="test"
                  android:textSize="16sp"/>
              </LinearLayout>

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

                <Button
                  android:id="@+id/btnGuest"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:text="test"
                  android:textSize="16sp"
                  />
              </LinearLayout>
            </LinearLayout>
          </LinearLayout>
        </ScrollView>

      </LinearLayout>
    </RelativeLayout>

    <ImageView
      android:id="@+id/imageView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_centerInParent="false"
      android:contentDescription="TODO"
      app:srcCompat="@mipmap/signup"
      tools:ignore="ContentDescription"/>

  </RelativeLayout>
</LinearLayout>

在清单中我尝试了以下属性:

android:windowSoftInputMode="adjustResize"

另外,我尝试过类似问题的解决方案,如:

但是对我不起作用。

有谁知道为什么它不起作用?
提前谢谢!

3 个答案:

答案 0 :(得分:3)

试试这个:

<?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:id="@+id/profile_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:windowSoftInputMode="adjustResize|adjustPan"
    tools:context="com.example.user22.hotelxp.Activity.MyProfileActivity">


   <ImageView
       android:id="@+id/imageView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
       android:layout_centerInParent="false"
       android:contentDescription="TODO"
       app:srcCompat="@mipmap/signup"
       android:layout_alignParentBottom="true"
       tools:ignore="ContentDescription"/>

    <LinearLayout
        android:id="@+id/profile_layout_main"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <ScrollView
            android:id="@+id/layout_scroll"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

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

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="80dip"
                    android:baselineAligned="false"
                    android:orientation="horizontal"
                    android:paddingLeft="10dip"
                    android:paddingRight="10dip">

                    <LinearLayout
                        android:layout_width="0dip"
                        android:layout_height="match_parent"
                        android:layout_weight="0.5"
                        android:orientation="vertical"
                        android:paddingEnd="5dip"
                        tools:ignore="RtlSymmetry">

                        <com.rengwuxian.materialedittext.MaterialEditText
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"/>
                    </LinearLayout>

                    <LinearLayout
                        android:layout_width="0dip"
                        android:layout_height="match_parent"
                        android:layout_weight="0.5"
                        android:orientation="vertical">

                        <com.rengwuxian.materialedittext.MaterialEditText
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"/>
                    </LinearLayout>
                </LinearLayout>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="80dip"
                    android:baselineAligned="false"
                    android:orientation="horizontal"
                    android:paddingLeft="10dip"
                    android:paddingRight="10dip">

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:layout_weight="0.5"
                        android:orientation="vertical"
                        android:paddingEnd="5dip"
                        tools:ignore="RtlSymmetry">

                        <com.rengwuxian.materialedittext.MaterialEditText
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            />
                    </LinearLayout>

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

                        <com.rengwuxian.materialedittext.MaterialEditText
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"/>
                    </LinearLayout>
                </LinearLayout>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="70dip"
                    android:baselineAligned="false"
                    android:orientation="horizontal"
                    android:paddingLeft="10dip"
                    android:paddingRight="10dip">

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:layout_weight="0.5"
                        android:orientation="vertical"
                        android:paddingEnd="5dip"
                        tools:ignore="RtlSymmetry">

                        <com.rengwuxian.materialedittext.MaterialEditText
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"/>
                    </LinearLayout>

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

                        <com.rengwuxian.materialedittext.MaterialEditText
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            />
                    </LinearLayout>
                </LinearLayout>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="70dip"
                    android:orientation="vertical"
                    android:paddingEnd="10dip"
                    tools:ignore="RtlSymmetry">

                    <com.rengwuxian.materialedittext.MaterialEditText
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        />

                </LinearLayout>


            </LinearLayout>


        </ScrollView>


    </LinearLayout>


    <RelativeLayout
        android:id="@+id/btn_layout"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="60dip"
            android:baselineAligned="false"
            android:orientation="horizontal"
            android:paddingLeft="5dip"
            android:paddingRight="5dip">

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

                <Button
                    android:id="@+id/btnSignUp"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:text="test"
                    android:textSize="16sp"/>
            </LinearLayout>

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

                <Button
                    android:id="@+id/btnGuest"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:text="test"
                    android:textSize="16sp"
                    />
            </LinearLayout>
        </LinearLayout>
    </RelativeLayout>

</RelativeLayout>

在AndroidManifest中:

android:windowSoftInputMode="stateHidden|adjustResize" 

答案 1 :(得分:2)

android:windowSoftInputMode="adjustPan|adjustResize"添加到调用Activity的

的android清单中

onCreate()方法

上添加此行
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

答案 2 :(得分:1)

最后,我找到了解决方案 我刚刚将Scrollview's父级更改为RelativeLayout(而不是LinearLayout)。
我不知道为什么,但它解决了这个问题。也许在布局中它的主要布局是RelativeLayout,Scrollview的父级应该是RelativeLayout! (但我不确定)

  

这是固定代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="#03A9F4"
  android:gravity="center"
  >

  <RelativeLayout
    android:id="@+id/main"
    android:layout_width="310dip"
    android:layout_height="485dip"
    android:background="#03A9F4"
    android:gravity="center">

    <RelativeLayout
      android:layout_width="match_parent"
      android:layout_height="435dip"
      android:layout_alignParentBottom="true"
      android:layout_alignParentTop="false"
      android:background="@drawable/border_signup_signin_auth">

      <!--It changed to RelativeLayout and fix the problem-->
      <RelativeLayout  
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="70dip"
          android:orientation="vertical"
          tools:ignore="UselessLeaf">
        </LinearLayout>


        <ScrollView
          android:id="@+id/ScrollMain"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:isScrollContainer="false"
          >

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

            <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="80dip"
              android:baselineAligned="false"
              android:orientation="horizontal"
              android:paddingLeft="10dip"
              android:paddingRight="10dip">

              <LinearLayout
                android:layout_width="0dip"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:orientation="vertical"
                android:paddingEnd="5dip"
                tools:ignore="RtlSymmetry">

                <com.rengwuxian.materialedittext.MaterialEditText
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"/>
              </LinearLayout>

              <LinearLayout
                android:layout_width="0dip"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:orientation="vertical">

                <com.rengwuxian.materialedittext.MaterialEditText
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"/>
              </LinearLayout>
            </LinearLayout>

            <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="80dip"
              android:baselineAligned="false"
              android:orientation="horizontal"
              android:paddingLeft="10dip"
              android:paddingRight="10dip">

              <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:orientation="vertical"
                android:paddingEnd="5dip"
                tools:ignore="RtlSymmetry">

                <com.rengwuxian.materialedittext.MaterialEditText
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  />
              </LinearLayout>

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

                <com.rengwuxian.materialedittext.MaterialEditText
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"/>
              </LinearLayout>
            </LinearLayout>

            <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="70dip"
              android:baselineAligned="false"
              android:orientation="horizontal"
              android:paddingLeft="10dip"
              android:paddingRight="10dip">

              <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:orientation="vertical"
                android:paddingEnd="5dip"
                tools:ignore="RtlSymmetry">

                <com.rengwuxian.materialedittext.MaterialEditText
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"/>
              </LinearLayout>

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

                <com.rengwuxian.materialedittext.MaterialEditText
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  />
              </LinearLayout>
            </LinearLayout>

            <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="70dip"
              android:orientation="vertical"
              android:paddingEnd="10dip"
              tools:ignore="RtlSymmetry">

              <com.rengwuxian.materialedittext.MaterialEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                />

            </LinearLayout>

            <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="60dip"
              android:baselineAligned="false"
              android:orientation="horizontal"
              android:paddingLeft="5dip"
              android:paddingRight="5dip">

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

                <Button
                  android:id="@+id/btnSignUp"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:text="test"
                  android:textSize="16sp"/>
              </LinearLayout>

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

                <Button
                  android:id="@+id/btnGuest"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:text="test"
                  android:textSize="16sp"
                  />
              </LinearLayout>
            </LinearLayout>
          </LinearLayout>
        </ScrollView>

      </LinearLayout>
    </RelativeLayout>

    <ImageView
      android:id="@+id/imageView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_centerInParent="false"
      android:contentDescription="TODO"
      app:srcCompat="@mipmap/signup"
      tools:ignore="ContentDescription"/>

  </RelativeLayout>
</LinearLayout>

没有必要在Java文件或Manifest中添加任何内容。

output