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
ведет стандартный путь.
Какие идеи могут быть причиной?
![enter image description here]()
Ответы
Ответ 1
Вы должны изменить намек, а не на EditText, но на TextInputLayout. Так будет:
TextInputLayout v = (TextInputLayout) LayoutInflater.from(this).inflate(R.layout.edittext_w_surrounding_textinputlayout, null);
v.setHint("Added programmatically");
TextInputLayout имеет свой собственный параметр подсказки и при раздувании от макета получает подсказку от него child EditText и устанавливает пустой намек на него.
Если вы хотите изменить подсказку программно, вам нужно вызвать textInputLayout.setHint(текст строки) вместо изменения подсказки EditText
Ответ 2
Я использую это ((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);