Android TextInputLayout升级后的坑
Google自从推出全平台的Material Design的设计风格以来,各位大神都贡献了很多符合这一风格的custom组件,直到Android官方的design支持库推出,大家对Material的追捧简直是蜂拥而上。
之前有用过其他自定义的EditText,但是design的TextInputEditText更好的支持了Error、Hint和Material风格,遂用上。
代码如下:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone">
<android.support.design.widget.TextInputEditText
android:id="@+id/code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/code"
android:inputType="text"
android:textSize="14sp" />
</android.support.design.widget.TextInputLayout>
TextInputLayout在使用时默认visibility=gone,运行时根据逻辑置为visible或者gone,当在Java代码中操作时是通过id=code的TextInputEditText来操作(getParent())父组件TextInputLayout的。
在design support version=25.0.0之前,一切都正常,setVisibility都能正常操纵父组件,但升级之后一切失效了,WHAT!?WHY!?。
通过DEBUG才发现,TextInputLayput做出了更改,添加对密码显示隐藏的支持,在Java代码中又增加了一层FrameLayout导致通过getParent()获取到的并不是TextInputLayput组件。
最新TextInputLayout的源代码更改,移步。
问题还是归因于正确(非怪异???)的使用组件~