2017-05-09 61 views
2

我使用ConstraintLayout來設計一個註冊屏幕。我已將ConstraintLayout放在滾動視圖中。即使在鍵盤打開的情況下,用戶也應該能夠滾動並查看整個內容。此功能在我使用RelativeLayout時有效,但在使用ConstraintLayout時不起作用。屏幕底部的視圖隱藏在鍵盤後面。以下是我正在使用的佈局。約束佈局滾動到底部打開鍵盤

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 
    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="#FFFFFF" 
    android:paddingTop="23dp" 
    android:fillViewport="true" 
    tools:context="com.givhero.activities.LoginActivity"> 

    <android.support.constraint.ConstraintLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="bottom" 
     tools:context="com.givhero.activities.LoginActivity"> 

     <ImageView 
      android:id="@+id/back" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="15dp" 
      android:src="@drawable/back" 
      android:tint="@color/colorPrimary" 
      app:layout_constraintStart_toStartOf="parent" 
      app:layout_constraintTop_toTopOf="parent" 
      tools:layout_editor_absoluteX="0dp"/> 
     <TextView 
      android:id="@+id/regEmail" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="20dp" 
      android:paddingLeft="10dp" 
      android:text="@string/sign_up_email" 
      android:textColor="@color/colorPrimary" 
      android:textSize="@dimen/titles_lists" 
      app:layout_constraintStart_toStartOf="parent" 
      app:layout_constraintTop_toBottomOf="@+id/back" 
      tools:layout_editor_absoluteX="0dp"/> 

     <TextView 
      android:id="@+id/nameEditText" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="15dp" 
      android:layout_marginLeft="15dp" 
      android:layout_marginRight="15dp" 
      android:layout_marginStart="15dp" 
      android:layout_marginTop="30dp" 
      android:background="@android:color/transparent" 
      android:gravity="left" 
      android:hint="Name" 
      android:textColor="@color/dark" 
      android:textColorHint="@color/dark" 
      android:textSize="@dimen/base" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" 
      app:layout_constraintTop_toBottomOf="@+id/regEmail" 
      /> 

     <View 
      android:id="@+id/nameDivider" 
      android:layout_width="0dp" 
      android:layout_height="1dp" 
      android:layout_marginTop="15dp" 
      android:background="@color/divider" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" 
      app:layout_constraintTop_toBottomOf="@+id/nameEditText" 
      /> 

     <EditText 
      android:id="@+id/emailEditText" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="15dp" 
      android:layout_marginLeft="15dp" 
      android:layout_marginRight="15dp" 
      android:layout_marginStart="15dp" 
      android:layout_marginTop="30dp" 
      android:background="@android:color/transparent" 
      android:gravity="left" 
      android:hint="Email" 
      android:inputType="textEmailAddress" 
      android:textColor="@color/dark" 
      android:textColorHint="@color/dark" 
      android:textSize="@dimen/base" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" 
      app:layout_constraintTop_toBottomOf="@+id/nameDivider" 
      /> 

     <View 
      android:id="@+id/emailDivider" 
      android:layout_width="0dp" 
      android:layout_height="1dp" 
      android:layout_marginTop="15dp" 
      android:background="@color/divider" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" 
      app:layout_constraintTop_toBottomOf="@+id/emailEditText"/> 

     <Button 
      android:id="@+id/submitButton" 
      android:layout_width="0dp" 
      android:layout_height="62dp" 
      android:layout_marginEnd="15dp" 
      android:layout_marginLeft="15dp" 
      android:layout_marginRight="15dp" 
      android:layout_marginStart="15dp" 
      android:layout_marginTop="30dp" 
      android:background="@drawable/button_theme" 
      android:enabled="false" 
      android:text="@string/sign_up" 
      android:textColor="#FFFFFF" 
      android:textSize="@dimen/base" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" 
      app:layout_constraintTop_toBottomOf="@+id/emailDivider" 
      /> 

     <TextView 
      android:id="@+id/signUpMessage" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_margin="30dp" 
      android:padding="15dp" 
      android:text="@string/sign_up_message" 
      android:textColor="@color/dark80Opacity" 
      android:textSize="@dimen/medium12" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" 
      app:layout_constraintStart_toStartOf="parent" 
      app:layout_constraintTop_toBottomOf="@+id/submitButton" 
      /> 
    </android.support.constraint.ConstraintLayout> 
</ScrollView> 

我在Manifest中添加了以下內容。

<activity android:name=".activities.EmailSignupActivity" 
      android:screenOrientation="portrait" 
      android:windowSoftInputMode="adjustResize"> 
     </activity> 

雖然它不按預期方式滾動。以下是屏幕截圖更好地理解

enter image description here

正如你可以看到我有以下EditText領域和註冊按鈕一些文本。我期望的是,即使鍵盤打開,用戶也應該能夠滾動到頁面的底部來查看該文本。請檢查下面的截圖,當鍵盤打開時

enter image description here

我無法滾動視圖,當鍵盤打開。

編輯 嘿,

如果有人被套牢這一問題,並降落在這裏的答案。我終於可以找到解決方案。我無法弄清楚這個問題的確切原因,但可以找出導致佈局不滾動的原因。起初,我一直在試圖佔據整個屏幕,包括設計狀態欄和使用的OnCreate

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

以下上面一行已引起問題,一旦我刪除它,我能夠滾動佈局。如果我們佔用包括設計狀態欄在內的全屏幕,我會很高興找到佈局不滾動的原因。

回答

1

將此添加到您的活動清單中。

android:windowSoftInputMode="stateVisible|adjustResize"

+0

嘿,我已經嘗試過,但它仍然不滾動 – Anu

1

可以使用ConstraintLayoutRelativeLayout的內使用滾動型。給fillViewportScrollView。我只是像我用的那樣改變你的代碼。當鍵盤打開時,您應該給marginBottom滾動。試試看。希望它有幫助。

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
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="#FFFFFF" 
android:paddingTop="23dp" 
tools:context="com.givhero.activities.LoginActivity"> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true"> 

<android.support.constraint.ConstraintLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="bottom" 
    tools:context="com.givhero.activities.LoginActivity"> 

    <ImageView 
     android:id="@+id/back" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="15dp" 
     android:src="@drawable/back" 
     android:tint="@color/colorPrimary" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     tools:layout_editor_absoluteX="0dp"/> 
    <TextView 
     android:id="@+id/regEmail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:paddingLeft="10dp" 
     android:text="@string/sign_up_email" 
     android:textColor="@color/colorPrimary" 
     android:textSize="@dimen/titles_lists" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/back" 
     tools:layout_editor_absoluteX="0dp"/> 

    <TextView 
     android:id="@+id/nameEditText" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="15dp" 
     android:layout_marginLeft="15dp" 
     android:layout_marginRight="15dp" 
     android:layout_marginStart="15dp" 
     android:layout_marginTop="30dp" 
     android:background="@android:color/transparent" 
     android:gravity="left" 
     android:hint="Name" 
     android:textColor="@color/dark" 
     android:textColorHint="@color/dark" 
     android:textSize="@dimen/base" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/regEmail" 
     /> 

    <View 
     android:id="@+id/nameDivider" 
     android:layout_width="0dp" 
     android:layout_height="1dp" 
     android:layout_marginTop="15dp" 
     android:background="@color/divider" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/nameEditText" 
     /> 

    <EditText 
     android:id="@+id/emailEditText" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="15dp" 
     android:layout_marginLeft="15dp" 
     android:layout_marginRight="15dp" 
     android:layout_marginStart="15dp" 
     android:layout_marginTop="30dp" 
     android:background="@android:color/transparent" 
     android:gravity="left" 
     android:hint="Email" 
     android:inputType="textEmailAddress" 
     android:textColor="@color/dark" 
     android:textColorHint="@color/dark" 
     android:textSize="@dimen/base" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/nameDivider" 
     /> 

    <View 
     android:id="@+id/emailDivider" 
     android:layout_width="0dp" 
     android:layout_height="1dp" 
     android:layout_marginTop="15dp" 
     android:background="@color/divider" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/emailEditText"/> 

    <Button 
     android:id="@+id/submitButton" 
     android:layout_width="0dp" 
     android:layout_height="62dp" 
     android:layout_marginEnd="15dp" 
     android:layout_marginLeft="15dp" 
     android:layout_marginRight="15dp" 
     android:layout_marginStart="15dp" 
     android:layout_marginTop="30dp" 
     android:background="@drawable/button_theme" 
     android:enabled="false" 
     android:text="@string/signup" 
     android:textColor="#FFFFFF" 
     android:textSize="@dimen/base" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/emailDivider" 
     /> 

    <TextView 
     android:id="@+id/signUpMessage" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_margin="30dp" 
     android:padding="15dp" 
     android:text="@string/sign_up_message" 
     android:textColor="@color/dark80Opacity" 
     android:textSize="@dimen/medium12" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/submitButton" 
     android:layout_marginTop="8dp" 
     android:layout_marginBottom="16dp"/> 

</android.support.constraint.ConstraintLayout> 
</ScrollView> 
</RelativeLayout>