12

TextInputLayoutの奇妙な動作に気付きました:

レイアウトに以下を追加すると:

    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <EditText
            android:id="@+id/txtFirstName"
            style="@style/EditTextStyle"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:hint="In layout"
            android:singleLine="true" />
    </android.support.design.widget.TextInputLayout>

すべてが期待どおりに機能します。

同様のレイアウトを次のように膨らませると:

    View v = LayoutInflater.from(this).inflate(R.layout.edittext_w_surrounding_textinputlayout, null);
    EditText editText = (EditText) v.findViewById(R.id.editText);
    editText.setHint("Added programmatically");

    ViewGroup root = (ViewGroup) findViewById(R.id.root);
    root.addView(v);

TextInputLayout表示されず、EditTextは標準的な方法で動作します。

理由は何ですか?

ここに画像の説明を入力

4

2 に答える 2

43

EditText ではなく、TextInputLayout でヒントを変更する必要があります。したがって、次のようになります。

TextInputLayout v = (TextInputLayout) LayoutInflater.from(this).inflate(R.layout.edittext_w_surrounding_textinputlayout, null);
v.setHint("Added programmatically");

TextInputLayout には独自のヒント パラメータがあり、レイアウトからインフレートするときに、その子 EditText からヒントを取得し、空のヒントを設定します。

プログラムでヒントを変更したい場合は、 EditText ヒントを変更する代わりに textInputLayout.setHint(String text) を呼び出す必要があります

于 2015-07-08T13:58:23.620 に答える