当View以编程方式添加时,TextInputLayout不显示

asc*_*sco 12 android android-layout android-textinputlayout

我注意到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>
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作.

当我给类似的布局充气时:

    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);
Run Code Online (Sandbox Code Playgroud)

在TextInputLayout没有出现和EditText的行为的标准方式.

任何想法可能是什么原因?

在此输入图像描述

pja*_*cze 43

您应该更改提示,而不是在EditText上,而是在TextInputLayout上.所以它将是:

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

TextInputLayout有自己的提示参数,当从布局中膨胀时,它会从它的子EditText中获得提示并在其上设置空提示.

如果要以编程方式更改提示,则必须调用textInputLayout.setHint(String text)而不是更改EditText提示