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>
все работает, как ожидалось.
когда я надуваю подобный макет, как:
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
ведет себя стандартным образом.
есть идеи, что причина может быть?
2 ответов
вы должны изменить подсказку, не на 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
Я использую этот ((заменить) команду findViewById(Р. ИД.framePreview)).addView(просмотр), без проблем на всех, может быть, его тип представления? если это
ViewGroup root = (ViewGroup) findViewById(R.id.root);
root.addView(v);
не быть
LinearLayout root = (LinearLayout) findViewById(R.id.root);
root.addView(v);