【问题标题】:Layout not scrolling and Views overlapping when Keyboard is shown Android Constraint layout显示键盘时布局不滚动且视图重叠 Android 约束布局
【发布时间】:2020-05-10 15:29:01
【问题描述】:

我遇到了一个问题,我的登录屏幕没有滚动,并且当键盘出现时视图与按钮重叠。

下面是登录布局的代码,谁能帮我解释一下为什么视图会重叠

我在这里粘贴了登录布局文件,当键盘打开时,布局文件底部的线性布局与上面定义的线性布局重叠。并且视图没有滚动。

<data>

 <!-- databinding data here -->

</data>


<androidx.core.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"            
    android:fillViewport="true">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="">

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/top_guideline"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintGuide_percent="0.25" />

        <ImageView
            android:id="@+id/img_logo_login"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="@+id/top_guideline"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/txt_title_m_id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"                
           app:layout_constraintTop_toBottomOf="@+id/top_guideline" />

        <TextView
            android:id="@+id/txt_signin_proceed"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/txt_title_m_id" />



        <RelativeLayout
            android:id="@+id/rl_olk_sign"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="25dp"
            android:layout_marginEnd="16dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/txt_signin_proceed">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_toStartOf="@+id/txt_olk_sign"
                android:src="@drawable/ic_olk" />

            <TextView
                android:id="@+id/txt_olk_sign"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:padding="10dp"/>
        </RelativeLayout>

        <TextView
            android:id="@+id/txt_no_olk_credentials"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="62dp"
            android:layout_marginTop="30dp"
            android:layout_marginEnd="62dp"                    
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/rl_olk_sign" />

        <TextView
            android:id="@+id/txt_term_login"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="62dp"
            android:layout_marginTop="12dp"
            android:layout_marginEnd="62dp"                    
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/txt_no_olk_credentials"/>

        <TextView
            android:id="@+id/tv_signin_username_pwd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:padding="10dp"
            android:layout_marginTop="@dimen/_10dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/txt_term_login"/>



            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:lineHeight="21sp"
                android:padding="@dimen/_5dp"/>
        </RelativeLayout>

        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/cl_input_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="gone"
            app:layout_constraintTop_toBottomOf="@+id/txt_signin_proceed">

            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/input_layout_user_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:layout_marginEnd="16dp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent">

                <androidx.appcompat.widget.AppCompatEditText
                    android:id="@+id/et_input_user_name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"/>
            </com.google.android.material.textfield.TextInputLayout>

            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/input_layout_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="5dp"
                android:layout_marginEnd="8dp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@id/input_layout_user_name">

                <androidx.appcompat.widget.AppCompatEditText
                    android:id="@+id/et_input_password"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="textPassword"/>
            </com.google.android.material.textfield.TextInputLayout>

            <LinearLayout
                android:id="@+id/rl_sign_in_login"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="@dimen/_20dp"
                android:layout_marginEnd="16dp"
                android:layout_marginBottom="42dp"                    
                android:onClick="@{() -> callback.method2()}"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/input_layout_password">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true"
                    android:padding="10dp"
                    android:gravity="center"/>
            </LinearLayout>

        </androidx.constraintlayout.widget.ConstraintLayout>


        <LinearLayout
            android:id="@+id/rl_copy_right"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="@dimen/_5dp"


            android:orientation="vertical"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toBottomOf="parent">


            <TextView
                android:id="@+id/tv_back_to_signin"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"                    
                android:gravity="center_horizontal"                    
                android:overScrollMode="always"
                android:layout_above="@id/tv_copyright_text"/>

            <TextView
                android:id="@+id/tv_copyright_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:gravity="center_horizontal"
                android:overScrollMode="always"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                android:visibility="visible" />
        </LinearLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>

【问题讨论】:

    标签: android android-constraintlayout overlapping android-nestedscrollview


    【解决方案1】:

    将此 adjustResize 添加到清单中的活动标记,然后如果键盘打开,您的视图将缩小。

     <activity
            android:name=".Activities.MyActivity"
            android:windowSoftInputMode="adjustResize"   ----->this tag
      />
    

    对于您的滚动,它可能会有所帮助,但如果没有,请告诉我,并发布一些您的视图外观的屏幕截图。

    【讨论】:

    • 为活动而醒来,但片段是怎么回事?
    • 如果你只有一个片段,毫无疑问它将与包含该片段的活动相同,所以我想你的问题是如何在一个活动中更改不同片段的“windowSoftInputMode”。在这种情况下,问题已得到回答stackoverflow.com/questions/39903109/…
    猜你喜欢
    • 2016-08-06
    • 2012-10-07
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2017-10-09
    • 2021-06-10
    相关资源
    最近更新 更多