2017-05-09 7 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

당신은 있는 ScrollView를 사용하는 RelativeLayout의ConstraintLayout를 사용할 수 있습니다. fillviewport ~ ScrollView을 제공하십시오. 코드를 변경하면됩니다. 그리고 키보드가 켜져있을 때 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>