TextInputLayout not showing when View added programmatically

岁酱吖の 提交于 2019-12-30 05:57:09

问题


I noticed some strange behaviour of TextInputLayout:

When I add the following to my layout:

    <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>

everything works as expected.

When I inflate a similar Layout like:

    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);

the TextInputLayout doesn't appear and the EditText behaves the standard way.

Any ideas what the reason could be?


回答1:


You should change hint, not on EditText, but on TextInputLayout. So it will be:

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

TextInputLayout has it's own hint parameter and when inflating from layout it get's hint from it's child EditText and set empty hint on it.

When you want to change hint programatically you have to call textInputLayout.setHint(String text) instead of changing EditText hint




回答2:


I use this ((FrameLayout) findViewById(R.id.framePreview)).addView(preview); with no issues at all, maybe its the view type? should this

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

not be this

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


来源:https://stackoverflow.com/questions/31294230/textinputlayout-not-showing-when-view-added-programmatically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!