2016-06-25 16 views
3

私は設計サポートライブラリの助けを借りてテキスト入力を作成しましたが、それは配置レイアウト内で奇妙に動作します。以下のコードは、表示され、最初はデザインビルダーとデバイスの両方で正しく表示されます。しかし、TextInputLayout(デザインまたは青写真のレイアウトのいずれか)を選択すると、layout_widthmatch_parentから0dpに変更されて消えます。制約レイアウトの一部としてTextInputLayoutのレイアウトの問題

<android.support.design.widget.TextInputLayout 
    android:id="@+id/textInputLayout" 
    android:layout_height="wrap_content" 
    android:layout_width="0dp" 
    app:layout_constraintLeft_toLeftOf="@+id/activity_login" 
    android:layout_marginLeft="16dp" 
    android:layout_marginStart="16dp" 
    app:layout_constraintTop_toTopOf="@+id/activity_login" 
    android:layout_marginTop="16dp" 
    app:layout_constraintRight_toRightOf="@+id/activity_login" 
    android:layout_marginRight="16dp" 
    android:layout_marginEnd="16dp" 
    app:layout_constraintBottom_toBottomOf="@+id/activity_login" 
    android:layout_marginBottom="16dp"> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textEmailAddress" 
     android:ems="10" 
     android:id="@+id/email" 
     android:layout_weight="1" 
     android:hint="@string/email" 
     tools:layout_editor_absoluteX="0dp" 
     tools:layout_editor_absoluteY="11dp"/> 
</android.support.design.widget.TextInputLayout> 

The state of the layout after the EditText have changed

+1

あなたの問題は何ですか?これが正しく動作しているようです。 –

+0

残念ながら、そうではありません。 layout_widthプロパティEditTextは '0dp'に設定されたままです。これは、兄弟または親ビューが編集されるたびに発生します。 –

+0

はい、それは正確な動作です。 'EditText'幅は現在' match_parent'として設定されています。したがって、親レイアウトへの変更がその中の 'EditText'に影響を与えるときはいつでも。 –

答えて

2

私は戻ってきて、これはまだ開いたままであるため、ソリューションを提供したい考え出し。

私がEditTextビューを見ていた理由は、TextInputLayoutで異常に動作していた理由は、最初にそこにあってはならないからです。 TextInputLayoutはデザインサポートライブラリであり、開発者はマテリアルデザイン仕様と一致する方法でテキストフィールドの動的ラベルとエラーメッセージを簡単に作成できます。ただし、TextInputEditTextは子として、EditTextではありません。

<android.support.design.widget.TextInputLayout 
    android:id="@+id/emailLayout" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:labelFor="@+id/email" 
    app:layout_constraintLeft_toLeftOf="@+id/activity_login" 
    android:layout_marginLeft="16dp" 
    android:layout_marginStart="16dp" 
    app:layout_constraintTop_toTopOf="@+id/activity_login" 
    android:layout_marginTop="16dp" 
    app:layout_constraintRight_toRightOf="@+id/activity_login" 
    android:layout_marginRight="16dp" 
    android:layout_marginEnd="16dp" 
    app:layout_constraintBottom_toBottomOf="@+id/activity_login" 
    android:layout_marginBottom="16dp"> 

    <android.support.design.widget.TextInputEditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/email" 
     android:inputType="textEmailAddress" 
     android:hint="@string/email" 
     tools:layout_editor_absoluteX="0dp" 
     tools:layout_editor_absoluteY="11dp" 
     /> 
</android.support.design.widget.TextInputLayout> 
+0

AndroidスタジオでTextInputLayoutをドラッグすると、EditTextがその中にありますが、[Documentation] (https://developer.android.com/reference/android/support/design/widget/TextInputLayout.html)EditTextの代わりにandroid.support.design.widget.TextInputEditTextをサポートしていることがわかりました – Pulkit