Как удалить плавающую метку из TextInputLayout в стиле OutlinedBox?

Есть ли способ удалить плавающую метку (подсказку), когда TextInputLayout находится в режиме фокусировки?

Когда я пытаюсь установить app:hintEnabled="false" и подсказка внутри TextInputeEditText, TextInputLayout ведет себя странно, скрывая верхний удар.

<com.google.android.material.textfield.TextInputLayout
      style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:hint="Text">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

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

Важно то, что я использую Material Components в версии 1.1.0-alpha01.

редактировать

Вот как это выглядит (когда ввод не сфокусирован):

Верхний ход обрезан.

2 ответа

Да, есть довольно простой способ удалить подсказку с плавающей меткой и оставить только подсказку внутри вашего TextInputLayout.

Этого легко добиться, отключив подсказку в TextInputLayout, и установив подсказку на TextInputEditText вместо TextInputLayout как это:

       <com.google.android.material.textfield.TextInputLayout
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:hintEnabled="false">

    <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="hint text comes here" />

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

Результат выглядит примерно так:

А когда добавить какой-нибудь текст, он будет выглядеть так:

Я пробовал это в Material Components v1.2.0

Просто установите подсказку для EditText программно и удалить app:hintEnabled="false" от твоего TextInputLayout если у вас, в моем случае сработало:)

Попробуйте установить подсказку пустой как для макета текста, так и для редактирования текста:-

<com.google.android.material.textfield.TextInputLayout
      app:boxBackgroundMode="outline"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:hint="">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:hint=""
            android:layout_height="wrap_content" />

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

Если вы хотите использовать подсказку, то вы можете использовать настраиваемое рисование в качестве фона EditText:-

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <corners android:radius="10dp"/>
    <solid android:color="#ffffff"/>
    <stroke android:color="#000000"
    android:width="2dp"/>

</shape>

Вы должны использовать этот стиль в первую очередь:

<style name="TextInputLayoutOutlinedBoxStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="android:textColorHint">#F5F5F5</item>
    <item name="hintTextAppearance">@style/HintTextAppearance</item>
    <item name="boxCornerRadiusBottomEnd">20dp</item>
    <item name="boxCornerRadiusBottomStart">20dp</item>
    <item name="boxCornerRadiusTopEnd">20dp</item>
    <item name="boxCornerRadiusTopStart">20dp</item>
</style>

И у вас должен быть textinputlayout, который содержит этот стиль следующим образом:

  <com.google.android.material.textfield.TextInputLayout
        style="@style/TextInputLayoutOutlinedBoxStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/relativelayout_activatetoken_main"
        android:layout_marginStart="20dp"
        android:layout_marginTop="30dp"
        android:layout_marginEnd="20dp"
        android:hint="@string/activatetoken_passwordhint"
        android:textColorHint="@color/colorText"
        app:helperText="@string/activatetoken_passwordhelpertext"
        app:helperTextTextAppearance="@style/TextAppearanceHelper"
        app:hintTextAppearance="@style/TextAppearanceBase"
        app:passwordToggleTint="@color/text_50">

И для цвета границы используйте это в цветах:

 <color name="mtrl_textinput_default_box_stroke_color" tools:override="true">#F5F5F5</color>
Другие вопросы по тегам