Android-无法隐藏`TextInputLayout` /`TextInputEditText`下划线

时间:2019-09-19 16:03:27

标签: android android-layout material-design android-textinputlayout android-textinputedittext

我当前正在尝试禁用TextInputEditText的下划线。 current implementation的外观如下。我想要相同的外观,但没有下划线。这是当前的XML:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:theme="@style/ProfileDetail.TextInputLayout"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/value"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/selector_background_profile_item"
        android:ellipsize="end"
        android:maxLines="1"
        android:textAppearance="?textAppearanceBody2"
        android:enabled="false"
        tools:text="Jimmy" />

</com.google.android.material.textfield.TextInputLayout>

自定义样式:

<style name="ProfileDetail.TextInputLayout" parent="Widget.Design.TextInputLayout">
    <item name="colorControlNormal">@color/white</item>
</style>

到目前为止,我已经尝试过:

  • 使用定义的colorControlNormal将TextInputLayout的主题设置为自定义样式
  • TextInputEditText和/或TextInputLayout的背景覆盖为纯色可绘制对象

大多数在线解决方案都建议使用自定义样式并设置colorControlNormal,但这似乎对我来说并不成功。预先感谢

2 个答案:

答案 0 :(得分:0)

当前尚不存在在TextInputLayout中隐藏下划线的方法。
但是,您可以更改默认颜色。
要使用FilledBox样式更改底线颜色,可以在布局中使用 app:boxStrokeColor 属性,也可以在样式中使用属性 boxStrokeColor 。< / p>

类似的东西:

<com.google.android.material.textfield.TextInputLayout
    app:boxStrokeColor="@color/my_selector"
    ...>

<style name="ProfileDetail.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
    <item name="boxStrokeColor">@color/my_selector</item>
    ....
</style>

这是boxStrokeColor使用的默认选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="?attr/colorPrimary" android:state_focused="true"/>
  <!-- 4% overlay over 42% colorOnSurface -->
  <item android:alpha="0.46" android:color="?attr/colorOnSurface" android:state_hovered="true"/>
  <item android:alpha="0.38" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
  <item android:alpha="0.42" android:color="?attr/colorOnSurface"/>
</selector>

答案 1 :(得分:0)

如果将背景色设置为透明,它将消失:

yourEditText.setBackground(getResources().getDrawable(R.color.transparent));

其中:

<color name="transparent">#00000000</color>

编辑:在加布里埃发表评论后,我再次检查了我的项目,只要我直接而不是通过TextInputLayout更改TextInputEditText视图上的背景,就可以验证上述解决方案是否对我有用。我认为这种想法是用颜色替换了包含下划线的背景可绘制对象,并且由于颜色是透明的,因此视图与背景融合在一起。

编辑2:同样,如果您想编辑包含的布局,对我来说似乎有用:mTextInputLayout.setBoxBackgroundMode(TextInputLayout.BOX_BACKGROUND_NONE);