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 имеет свой собственный параметр hint, и при накачке из макета он получает подсказку от своего дочернего EditText и устанавливает на нее пустую подсказку.
Если вы хотите изменить подсказку программно, вы должны вызвать textInputLayout.setHint (String text) вместо изменения подсказки EditText
Я использую этот ((FrameLayout) findViewById (R. id. framePreview)). addView (preview); без каких-либо проблем вообще, может быть, это тип представления? должно ли это
ViewGroup root = (ViewGroup) findViewById(R.id.root); root.addView(v);Не будь этим
LinearLayout root = (LinearLayout) findViewById(R.id.root); root.addView(v);
Comments