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



Есть идеи, в чем может быть причина?



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

580   2  

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

    Ничего не найдено.