39

TextInputLayout には、ユーザーからの入力を受け取る EditText が含まれています。Android Design Support Library で導入された TextInputLayout では、EditText 自体ではなく、EditText を保持している TextInputLayout にエラーを設定する必要があります。UI を記述する場合、TextInputLayout 全体ではなく、EditText のみに焦点が当てられるため、キーボードがエラーをカバーする可能性があります。次の GIF では、エラー メッセージを表示するには、まずユーザーがキーボードを取り外す必要があることに注意してください。これと、キーボードを使用して先に進むように IME アクションを設定することを組み合わせると、非常に紛らわしい結果になります。

例のエラー

レイアウト xml コード:

<android.support.design.widget.TextInputLayout
    android:id="@+id/uid_text_input_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:errorEnabled="true"
    android:layout_marginTop="8dp">

    <EditText
        android:id="@+id/uid_edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:hint="Cardnumber"
        android:imeOptions="actionDone"/>

</android.support.design.widget.TextInputLayout>

エラーを TextInputLayout に設定する Java コード:

uidTextInputLayout.setError("Incorrect cardnumber");

ユーザーが操作を行わなくても、エラー メッセージが確実に表示されるようにするにはどうすればよいですか? フォーカスを移動することはできますか?

4

7 に答える 7

2

ユーザーが少なくともスクロールしてエラーメッセージを表示できるように、すべてをScrollViewコンテナーに配置する必要があります。それが私のために働いた唯一のものです。

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        ...
        other views
        ...
    </LinearLayout>
</ScrollView>
于 2015-10-20T15:47:48.530 に答える
-1

コンテナを固定の高さにすると、キーボードがエラーテキスト用のスペースを残すことがわかりました

<FrameLayout 
    android:layout_width="match_parent"
    android:layout_height="75dp"
    android:layout_alignParentBottom="true">

  <android.support.design.widget.TextInputLayout
    android:id="@+id/text_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    app:errorEnabled="true"
    app:errorTextAppearance="@style/ErrorText">

     <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:imeOptions="actionGo"
        android:inputType="textPersonName"
        android:singleLine="true" />
  </android.support.design.widget.TextInputLayout>
</FrameLayout>
于 2015-11-12T13:29:47.980 に答える