Android中TextInputLayout与EditText搭配时边框不显示的解决方法
解决TextInputLayout OutlinedBox边框不显示的问题
嘿,我看了你遇到的问题——用了TextInputLayout的OutlinedBox样式,但输入框就是没边框,只显示空的输入区域对吧?这个问题其实挺常见的,核心原因是你用了普通的EditText,而不是Material组件库专门为TextInputLayout设计的TextInputEditText。
核心解决方案:替换EditText为TextInputEditText
Material Design的TextInputLayout需要和TextInputEditText配合使用才能正确渲染边框等样式,普通的EditText无法和它的样式系统完全兼容。你只需要把布局里的EditText换成com.google.android.material.textfield.TextInputEditText就行,同时可以去掉一些不需要的属性(比如透明背景)。
修改后的输入框部分代码如下:
<com.google.android.material.textfield.TextInputLayout android:id="@+id/signInFrag_phoneInpLay" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="@dimen/_15mdp" android:layout_marginLeft="@dimen/_15mdp" android:layout_marginEnd="@dimen/_15mdp" android:layout_marginRight="@dimen/_15mdp" android:layout_marginTop="@dimen/_30mdp" app:boxStrokeColor="@color/colorAccent" app:boxStrokeWidth="@dimen/_1mdp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/sendPhone_logo"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/signInFrag_phoneEdt" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="left|center_vertical" android:hint="@string/insertYourPhoneNumber" android:inputType="phone" android:maxLength="11" android:maxLines="1" android:singleLine="true" android:textColorHint="@color/colorLightGray" android:textSize="@dimen/_10mdp" app:drawableRightCompat="@drawable/ic_outline_phone" /> </com.google.android.material.textfield.TextInputLayout>
额外检查项(你已经做了,但确认下更稳妥)
- 你的应用主题已经继承了
Theme.MaterialComponents.Light.NoActionBar,这没问题,Material组件需要这样的主题才能正常工作。 - 依赖版本
com.google.android.material:material:1.2.1是稳定版,完全支持OutlinedBox样式,如果后续遇到其他样式问题,可以考虑升级到更近期的稳定版(比如1.4.0+),但当前版本足够解决这个问题。
为什么会这样?
TextInputEditText内部做了很多和TextInputLayout的交互逻辑,比如监听焦点变化来触发边框的显示/隐藏、颜色变化,而普通EditText没有这些适配逻辑,所以即使你给TextInputLayout设置了OutlinedBox样式,也无法正确渲染边框。
内容的提问来源于stack exchange,提问作者user14420509
相关产品推荐
相关产品推荐

