Android - не может скрыть подчеркивание `TextInputLayout` /` TextInputEditText` - PullRequest
0 голосов
/ 19 сентября 2019

В настоящее время я пытаюсь скрыть подчеркивание TextInputEditText, когда оно отключено.Вот как это выглядит с текущей реализацией .Я хочу такой же взгляд, но без подчеркивания.Вот текущий 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>

Что я пробовал до сих пор:

  • Настройка темы TextInputLayout к пользовательскому стилю с определенным colorControlNormal
  • Переопределение фона TextInputEditText и / или TextInputLayout для рисования сплошным цветом

Большинство решений в Интернете предлагают использовать пользовательскиестили и настройки colorControlNormal, но это, похоже, не помогает мне.Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 19 сентября 2019

Это исчезнет, ​​если вы установите прозрачный цвет фона:

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

где:

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

РЕДАКТИРОВАТЬ: После комментария Габриэле я снова зарегистрировался вмой проект, и я могу проверить, что вышеупомянутое решение работает для меня, пока я изменяю фон в представлении TextInputEditText напрямую, а не через TextInputLayout.Я думаю, что идея заключается в том, что цвет заменяет фон для рисования, который включает в себя подчеркивание, и, поскольку цвет прозрачен, представление сливается с фоном.

РЕДАКТИРОВАТЬ 2: Также то, что, кажется, работаетдля меня, если вы хотите редактировать содержащий макет вместо этого: mTextInputLayout.setBoxBackgroundMode(TextInputLayout.BOX_BACKGROUND_NONE);

0 голосов
/ 19 сентября 2019

В настоящее время не существует способа скрыть подчеркивание в TextInputLayout.
Однако вы можете изменить цвет по умолчанию.
Чтобы изменить цвет нижней строки с помощью стиля FilledBox, вы можете использовать app:boxStrokeColor атрибут в макете или атрибут boxStrokeColor в стиле.

Что-то вроде:

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