2017-07-31 66 views
0

我有兩個XML佈局文件,每個都有一個ScrollView作爲父項。 雖然一個正常工作,另一個不(每個XML具有相同的層次結構)。ScrollView無法正常工作

activity_login.xml

<?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" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fillViewport="true"> 

<android.support.constraint.ConstraintLayout 
    android:id="@+id/login_container" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/tvLogo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/logo" 
     android:textSize="50sp" 
     app:layout_constraintBottom_toTopOf="@+id/guideline2" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <android.support.constraint.Guideline 
     android:id="@+id/guideline2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     app:layout_constraintGuide_percent="0.25" /> 

    <TextView 
     android:id="@+id/tvRegisterLabel" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="3dp" 
     android:layout_marginStart="3dp" 
     android:text="@string/btn_login" 
     android:textSize="20sp" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline3" 
     app:layout_constraintRight_toLeftOf="@+id/guideline6" 
     app:layout_constraintTop_toTopOf="@+id/guideline2" /> 

    <android.support.design.widget.TextInputLayout 
     android:id="@+id/textInputLayout2" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="15dp" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline3" 
     app:layout_constraintRight_toLeftOf="@+id/guideline6" 
     app:layout_constraintTop_toBottomOf="@+id/tvRegisterLabel"> 

     <EditText 
      android:id="@+id/etEmail" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/et_email_hint" 
      android:inputType="textEmailAddress" 
      android:maxLength="70" 
      android:maxLines="1" 
      android:minLines="1" 
      android:text="[email protected]" 
      android:textSize="@dimen/et_hint_size" /> 
    </android.support.design.widget.TextInputLayout> 

    <android.support.constraint.Guideline 
     android:id="@+id/guideline3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     app:layout_constraintGuide_percent="0.15" /> 

    <android.support.constraint.Guideline 
     android:id="@+id/guideline6" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     app:layout_constraintGuide_percent="0.85" /> 

    <android.support.design.widget.TextInputLayout 
     android:id="@+id/textInputLayout7" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline3" 
     app:layout_constraintRight_toLeftOf="@+id/guideline6" 
     app:layout_constraintTop_toBottomOf="@+id/textInputLayout2"> 

     <EditText 
      android:id="@+id/etPassword" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/et_password_hint" 
      android:inputType="textPassword" 
      android:maxLength="30" 
      android:maxLines="1" 
      android:minLines="1" 
      android:text="1234qwer" 
      android:textSize="@dimen/et_hint_size" /> 
    </android.support.design.widget.TextInputLayout> 

    <ProgressBar 
     android:id="@+id/progressBar" 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginTop="8dp" 
     android:visibility="invisible" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline3" 
     app:layout_constraintRight_toLeftOf="@+id/guideline6" 
     app:layout_constraintTop_toBottomOf="@+id/textInputLayout7" /> 

    <Button 
     android:id="@+id/btnLogIn" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="8dp" 
     android:background="@drawable/round_button" 
     android:text="@string/btn_login" 
     android:textColor="@color/colorWhite" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline3" 
     app:layout_constraintRight_toLeftOf="@+id/guideline6" 
     app:layout_constraintTop_toBottomOf="@+id/progressBar" /> 

    <com.facebook.login.widget.LoginButton 
     android:id="@+id/btnFacebook" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="8dp" 
     android:paddingBottom="15dp" 
     android:paddingLeft="15dp" 
     android:paddingTop="15dp" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline3" 
     app:layout_constraintRight_toLeftOf="@+id/guideline6" 
     app:layout_constraintTop_toBottomOf="@+id/btnLogIn" /> 

    <ImageButton 
     android:id="@+id/btnGoogle" 
     android:layout_width="0dp" 
     android:layout_height="50dp" 
     android:layout_marginTop="8dp" 
     android:background="@drawable/google_round_button" 
     android:scaleType="centerInside" 
     android:src="@drawable/google_button_background" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline3" 
     app:layout_constraintRight_toLeftOf="@+id/guideline6" 
     app:layout_constraintTop_toBottomOf="@+id/btnFacebook" /> 

    <TextView 
     android:id="@+id/tvRegister" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:layout_marginTop="8dp" 
     android:maxLines="2" 
     android:text="@string/tv_create_account" 
     android:textAlignment="center" 
     android:textColor="@color/colorPrimaryDark" 
     android:textSize="14sp" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline3" 
     app:layout_constraintRight_toLeftOf="@+id/guideline6" 
     app:layout_constraintTop_toBottomOf="@+id/tvForgotPassword" /> 

    <TextView 
     android:id="@+id/tvForgotPassword" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:text="@string/tv_forgot_password" 
     android:textAlignment="center" 
     android:textColor="@color/colorAccent" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline3" 
     app:layout_constraintRight_toLeftOf="@+id/guideline6" 
     app:layout_constraintTop_toBottomOf="@+id/btnGoogle" /> 
</android.support.constraint.ConstraintLayout> 

activity_register

<?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" 
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="wrap_content" 
    android:padding="10dp"> 

    <android.support.constraint.Guideline 
     android:id="@+id/guideline" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     app:layout_constraintGuide_percent="0.25" /> 

    <android.support.constraint.Guideline 
     android:id="@+id/guideline4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     app:layout_constraintGuide_percent="0.15" /> 

    <android.support.constraint.Guideline 
     android:id="@+id/guideline5" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     app:layout_constraintGuide_percent="0.85" /> 

    <TextView 
     android:id="@+id/tvLogo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/logo" 
     android:textSize="50sp" 
     android:textStyle="bold" 
     app:layout_constraintBottom_toTopOf="@+id/guideline" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <TextView 
     android:id="@+id/tvRegisterLabel" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="3dp" 
     android:layout_marginLeft="3dp" 
     android:layout_marginRight="3dp" 
     android:layout_marginStart="3dp" 
     android:fontFamily="sans-serif" 
     android:text="@string/label_register" 
     android:textAllCaps="true" 
     android:textSize="20sp" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline4" 
     app:layout_constraintRight_toRightOf="@+id/guideline5" 
     app:layout_constraintTop_toTopOf="@+id/guideline" /> 

    <android.support.design.widget.TextInputLayout 
     android:id="@+id/textInputLayout" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline4" 
     app:layout_constraintRight_toRightOf="@+id/guideline5" 
     app:layout_constraintTop_toBottomOf="@+id/tvRegisterLabel"> 

     <EditText 
      android:id="@+id/etEmailReg" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:focusable="true" 
      android:hint="@string/et_email_hint" 
      android:inputType="textEmailAddress" 
      android:maxLength="70" 
      android:maxLines="1" 
      android:minLines="1" 
      android:textSize="@dimen/et_hint_size" /> 
    </android.support.design.widget.TextInputLayout> 

    <android.support.design.widget.TextInputLayout 
     android:id="@+id/textInputLayout3" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline4" 
     app:layout_constraintRight_toRightOf="@+id/guideline5" 
     app:layout_constraintTop_toBottomOf="@+id/textInputLayout"> 

     <EditText 
      android:id="@+id/etNameReg" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:focusable="true" 
      android:hint="@string/et_name_hint" 
      android:inputType="textCapWords" 
      android:maxLength="30" 
      android:maxLines="1" 
      android:minLines="1" 
      android:textSize="@dimen/et_hint_size" /> 
    </android.support.design.widget.TextInputLayout> 

    <android.support.design.widget.TextInputLayout 
     android:id="@+id/textInputLayout4" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline4" 
     app:layout_constraintRight_toRightOf="@+id/guideline5" 
     app:layout_constraintTop_toBottomOf="@+id/textInputLayout3"> 

     <EditText 
      android:id="@+id/etPasswordReg" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:focusable="true" 
      android:hint="@string/et_password_hint" 
      android:inputType="textPassword" 
      android:maxLength="30" 
      android:maxLines="1" 
      android:minLines="1" 
      android:textSize="@dimen/et_hint_size" /> 
    </android.support.design.widget.TextInputLayout> 

    <android.support.design.widget.TextInputLayout 
     android:id="@+id/textInputLayout5" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline4" 
     app:layout_constraintRight_toRightOf="@+id/guideline5" 
     app:layout_constraintTop_toBottomOf="@+id/textInputLayout4"> 

     <EditText 
      android:id="@+id/etPasswordConfirmReg" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:focusable="true" 
      android:hint="@string/et_password_confirm_hint" 
      android:inputType="textPassword" 
      android:maxLength="30" 
      android:maxLines="1" 
      android:minLines="1" 
      android:textSize="@dimen/et_hint_size" /> 
    </android.support.design.widget.TextInputLayout> 

    <android.support.design.widget.TextInputLayout 
     android:id="@+id/textInputLayout6" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline4" 
     app:layout_constraintRight_toRightOf="@+id/guideline5" 
     app:layout_constraintTop_toBottomOf="@+id/textInputLayout5"> 

     <EditText 
      android:id="@+id/etPhoneNumber" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:focusable="true" 
      android:hint="@string/et_phone_hint" 
      android:inputType="phone" 
      android:maxLength="13" 
      android:maxLines="1" 
      android:minLines="1" 
      android:textSize="@dimen/et_hint_size" /> 
    </android.support.design.widget.TextInputLayout> 

    <TextView 
     android:id="@+id/tvRequired" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:text="@string/label_required" 
     android:textAlignment="textStart" 
     android:textSize="12sp" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline4" 
     app:layout_constraintRight_toRightOf="@+id/guideline5" 
     app:layout_constraintTop_toBottomOf="@+id/textInputLayout6" /> 

    <Button 
     android:id="@+id/btnRegister" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="40dp" 
     android:background="@drawable/round_button" 
     android:text="@string/label_register" 
     android:textColor="@android:color/white" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="@+id/guideline4" 
     app:layout_constraintRight_toRightOf="@+id/guideline5" 
     app:layout_constraintTop_toBottomOf="@+id/tvRequired" /> 
</android.support.constraint.ConstraintLayout> 

所以,澄清我的問題:在activity_login滾動視圖按預期正常工作。雖然在activity_register滾動視圖不滾動到底部,我不知道爲什麼,因爲我已經使用與activity_login相同的層次。

我在SO搜索了同樣的問題,但我還沒有找到任何解決我的問題。
任何幫助,將不勝感激,我正在尋找一個解決方案的天。

+0

抱歉,但我沒有看到滾動型關閉標籤 – Thorny84

+0

對不起,我的錯。意外地,我沒有在複製之前標記它。但是項目中有沒有。 –

回答

0

我不確定爲什麼這是一個問題,但問題似乎是你的水平Guideline。如果我刪除了Guideline,請刪除tvLogo對此的引用,並將tvRegisterLabel的引用更改爲app:layout_constraintTop_toBottomOf="@+id/tvLogo",一切正常。

我懷疑這是因爲您的佈局似乎有一組循環的規則。 ConstraintLayout的高度是wrap_content,所以它必須闡明它的全部觀點以知道它有多大。佈置其意見,它必須佈置01​​。佈局tvLogo,它必須佈置01​​。爲了佈置guidelineConstraintLayout必須知道它有多高。等等。

順便說一句,它看起來像你也許可以用LinearLayout代替這ConstraintLayout

0

對不起也沒有太多的聲譽添加註解,因此給予回答,

<android.support.constraint.ConstraintLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp"> 

從這個代碼activity_register XML刪除padding,這將解決您的問題

+0

對不起,不行! –

+0

我試過使用你的代碼,問題在「android.support.constraint.ConstraintLayout」中保持不變,當你在ScrollView的地方使用這個constraintLayout作爲主佈局,並在裏面使用ScrollView,那麼只有它會工作,我也試過用於activity_login,這也不適用於我的項目 –