Подчеркивание Edittext не будет go прочь - PullRequest
2 голосов
/ 22 марта 2020

Я использую горизонтальный линейный макет для отображения изображения и текстового поля рядом:

             <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:orientation="horizontal"
                android:background="@drawable/underline_dark"
                >


                <ImageView
                    android:id="@+id/emailImageView"
                    android:layout_width="0dp"
                    android:layout_height="30dp"
                    android:layout_weight="1"
                    android:src="@drawable/icon_email_temp" />

                <com.google.android.material.textfield.TextInputLayout
                    android:id="@+id/emailWrapper"
                    android:layout_width="270dp"
                    android:layout_height="62dp"
                    android:background="@null"
                    app:boxBackgroundColor="@android:color/transparent">

                    <EditText
                        android:id="@+id/email"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@null" />
                </com.google.android.material.textfield.TextInputLayout>

            </LinearLayout>

Я добавил нижнее подчеркивание к линейному макету, чтобы и изображение, и текстовое поле подчеркнуты вместе. Теперь мне нужно удалить подчеркивание из поля «Редактировать текст»:

enter image description here

Это изображение показывает, что подчеркивание текста редактирования по-прежнему присутствует, если сфокусированный,

enter image description here

, и его изображение показывает, что подчеркивание текста редактирования все еще присутствует в фокусе.

Я использовал xml код из каждого примера на SO: здесь и здесь безрезультатно. Изменение android: background на @null или @ android: color / transparent не влияет на текстовое поле редактирования.

Что еще можно сделать, чтобы удалить это подчеркивание из поля edittext?

E: Пожалуйста, не голосуйте, чтобы закрыть это ... Я объяснил, почему мой вопрос отличается, и связал их - эти решения НЕ РАБОТАЮТ.

Вот еще одна попытка комментария , Я добавил стиль:

<style name="Theme.App.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorControlNormal">@color/white</item>
    <item name="colorControlActivated">@color/white</item>
    <item name="colorControlHighlight">@color/white</item>
</style>

, а затем обновил и мой ввод текста, и редактирование текстовых объектов:

<com.google.android.material.textfield.TextInputLayout
                    android:id="@+id/emailWrapper"
                    android:layout_width="270dp"
                    android:layout_height="62dp"
                    android:background="@null"
                    android:theme="@style/Theme.App.Base"
                    app:boxBackgroundColor="@null">

                    <EditText
                        android:id="@+id/email"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@null"
                        android:hint="@string/email"
                        android:inputType="textEmailAddress"
                        android:autofillHints="@string/email"
                        android:theme="@style/Theme.App.Base"
                        />
                </com.google.android.material.textfield.TextInputLayout>

уменьшил поле редактирования текста, но не изменил границу :

enter image description here

Ответы [ 6 ]

1 голос
/ 04 апреля 2020

Я не уверен, что происходит. Я просто установил android:background="@null" и даже только на EditText, и он работал отлично, и в фокусе также нет подчеркивания. Я подозреваю, что, возможно, когда вы устанавливаете стиль, вы отменяете настройку фона.

попробуйте установить <item name="android:background">@null</item> в свой стиль

Понятия не имею, что я делаю по-другому. это мой код

<com.google.android.material.textfield.TextInputLayout
                android:id="@+id/lo_test"
                android:layout_marginTop="10dp"
                android:layout_gravity="center_horizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="test"
                    android:id="@+id/test"
                    android:background="@null"

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

здесь снимок экрана (синие и черные линии - просто автокорректор, они не появляются, когда вы пишете правильные слова). единственное, что я могу порекомендовать, - это просто скопировать мой код в новое действие. посмотрите, работает ли он, и начните добавлять другие функции, чтобы увидеть, что вы можете изолировать источник странности.

enter image description here

1 голос
/ 03 апреля 2020

Можете ли вы попробовать этот метод?

Изменить цвет нижней строки

<item name="colorControlNormal">#c5c5c5</item>
<item name="colorControlActivated">@color/accent</item>
<item name="colorControlHighlight">@color/accent</item>

Изменить цвет подсказки, когда он плавающий

<style name="MyHintStyle" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/main_color</item>
</style>


<android.support.design.widget.TextInputLayout
...
app:hintTextAppearance="@style/MyHintStyle">

<android.support.design.widget.TextInputLayout
...
app:hintTextAppearance="@style/MyHintStyle"
android:textColorHint="#c1c2c4">
0 голосов
/ 04 апреля 2020

Я недавно сталкивался с таким сценарием и только что попытался создать форму (нарисованную) и установить ее в качестве фона для редактирования текста.

Примерно так:


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

    <solid
        android:color="@color/colorWhite"
        >
    </solid>

    <stroke
        android:width="1dp"
        android:color="@color/colorPrimaryDark" >
    </stroke>

    <padding
        android:left="@dimen/padding_12"
        android:top="@dimen/padding_12"
        android:right="@dimen/padding_12"
        android:bottom="@dimen/padding_12"    >
    </padding>

    <corners
        android:radius="@dimen/radius_8"   >
    </corners>


</shape>

Пожалуйста, попробуйте, если это работает для вас.

0 голосов
/ 30 марта 2020

TextInputLayout определяет тему наложения, которая определяет стиль для EditText. Подчеркивание является частью фона, примененного к EditText.

Но ваша настройка больше не нужна. TextInputLayout.setStartIconDrawable() реализует поведение в самой библиотеке. Просто убедитесь, что у вас есть подходящие размеры.

0 голосов
/ 24 марта 2020

Ничто здесь не работает, и похоже, что нет решения. Android Пользовательский интерфейс сломан и довольно позорен во многих отношениях. Я решил проблему, используя android:drawableLeft:

<EditText
...
android:drawableLeft="@drawable/ic_email_left"
android:drawablePadding="20dp"
...  />

и создав пользовательский значок (пользовательские отступы, высота, ширина), создав отдельный файл xml ...:

    <item
        android:drawable="@drawable/ic_ebook"
        android:width="30dp"
        android:height="30dp"
        android:top="-20dp"
        />

</layer-list >

E: На самом деле это не ответ, а просто обходной путь, поэтому я не собираюсь его отмечать

0 голосов
/ 22 марта 2020

Попробуйте добавить это к TextInputLayout:

style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
...