TextInputLayout не отображается, когда View добавлен программно

Я заметил странное поведение 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 ведет себя стандартным образом.

Какие идеи могут быть причиной?

Введите описание изображения здесь

Solutions Collecting From Web of "TextInputLayout не отображается, когда View добавлен программно"

Вы должны изменить намек, а не на EditText, а на TextInputLayout. Так будет:

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

TextInputLayout имеет свой собственный параметр подсказки, и при раздувании от макета он получает подсказку с его дочернего EditText и устанавливает пустой намек на него.

Если вы хотите изменить подсказку программно, вам нужно вызвать textInputLayout.setHint (текст строки) вместо изменения подсказки EditText

Я использую это ((FrameLayout) findViewById (R.id.framePreview)). AddView (предварительный просмотр); Без каких-либо проблем, возможно, это вид вида? Если это

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

Не быть этим

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