从TextInputEditText删除下划线

时间:2019-07-16 18:35:40

标签: android android-textinputlayout android-textinputedittext

我有一个Android屏幕,该屏幕接收来自用户的电子邮件。下面是代码段,我想删除出现在文本下方的下划线。

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    android:hint="@string/email"
    android:textColorHint="@color/blueBackground"
    app:boxBackgroundColor="@color/input_background"
    app:boxCornerRadiusBottomEnd="20dp"
    app:boxCornerRadiusBottomStart="20dp"
    app:boxCornerRadiusTopEnd="20dp"
    app:boxCornerRadiusTopStart="20dp"
    app:endIconMode="clear_text"
    app:endIconTint="@color/blueBackground"
    app:hintTextColor="@color/blueBackground">

    <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/blueBackground"
        android:textSize="18sp"
        android:layout_margin="8dp" />

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

我尝试过android:background="@null"

<item name="colorControlNormal">@android:color/transparent</item> <item name="colorControlActivated">@android:color/transparent</item>

但是它不起作用。

EditText

14 个答案:

答案 0 :(得分:22)

如果您想使用填充的框,那么下面的代码对我来说非常有用。

app:boxStrokeWidth="0dp"
app:boxStrokeWidthFocused="0dp"

在输入布局的上方添加行。

答案 1 :(得分:8)

#include <iostream> #include <sstream> #include <string> int main() { int value[2], i = 0; std::string V, temp; getline(std::cin, V); std::stringstream ss(V); while (getline(ss, temp, '.') && i < 2) //tokenize stream by '.' { value[i++] = std::stoi(temp); //convert to integer } printf("NOTAS: \n"); //you can replace all these with std::cout printf("%d Nota(s) de R$ 100.00\n", value[0] / 100); printf("%d Nota(s) de R$ 50.00\n", value[0] % 100 / 50); printf("%d Nota(s) de R$ 20.00\n", value[0] % 100 % 50 / 20); printf("%d Nota(s) de R$ 10.00\n", value[0] % 100 % 50 % 20 / 10); printf("%d Nota(s) de R$ 5.00\n", value[0] % 100 % 50 % 20 % 10 / 5); printf("%d Nota(s) de R$ 2.00\n", value[0] % 100 % 50 % 20 % 10 % 5 / 2); printf("MOEDAS: \n"); printf("%d Moeda(s) de R$ 1.00\n", value[0] % 100 % 50 % 20 % 10 % 5 % 2); printf("%d Moeda(s) de R$ 0.50\n", value[1] % 100 / 50); printf("%d Moeda(s) de R$ 0.25\n", value[1] % 100 % 50 / 25); return 0; } 在父app:boxBackgroundMode="none"

答案 2 :(得分:2)

TextInputLayout上添加此行对我有用:

app:boxStrokeWidth="0dp"

更新

在color res目录中添加et_box_color.xml文件,并在其中添加以下行:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
   <item android:color="@color/transparent"
        android:state_pressed="true"
        android:state_focused="true"
        android:state_selected="true"
        android:state_checkable="true"
        android:state_checked="true"
        android:state_enabled="true"
        android:state_window_focused="true"/>
</selector>

现在添加您的材料编辑文本,如下所示:

<com.google.android.material.textfield.TextInputLayout
                android:id="@+id/textInputLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/border"
                app:boxStrokeColor="@color/et_box_color"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/llBank">

                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/etAmount"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="1dp"
                    android:background="#00FFFFFF"
                    android:gravity="center"
                    android:hint="Amount"
                    android:imeOptions="actionDone"
                    android:inputType="numberDecimal" />

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

我添加了背景以使TextInputLayout成为边框,如果不需要,请删除TextInputLayout的背景。要使背景透明,必须使用TextInputEditText的背景。

答案 3 :(得分:2)

如果您想要app:boxBackgroundMode填充且没有下划线,则可以使用

<item name="boxStrokeWidthFocused">0dp</item>
<item name="boxStrokeWidth">0dp</item>

答案 4 :(得分:1)

解决方法很简单,你必须在 TextInputLayout 中加入这一行: style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" 它将被修复。

答案 5 :(得分:0)

尝试将背景设置为@null@android:color/transparent

答案 6 :(得分:0)

材料组件库似乎使用app:boxStrokeColor绘制了自己的下划线。此属性是ColorStateList,因此您必须创建一个颜色状态列表资源,其中所有状态的颜色都设置为透明。因此,基本上,您想创建一个新文件res/color/filename.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:color="@android:color/transparent"
        android:state_pressed="true"
        android:state_focused="true"
        android:state_selected="true"
        android:state_checkable="true"
        android:state_checked="true"
        android:state_enabled="true"
        android:state_window_focused="true" />
</selector>

并将app:boxStrokeColor属性设置为@color/filename

但是,这给我留下了黑色的下划线,但仍然无法响应android:background=@null<item name="colorControl*">@android:color/transparent</item>


TL; DR

快速修复:如果您使用TextInputLayout设置了style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"的轮廓,则该框看起来几乎相同,但是下划线消失了。为了删除笔划,只需将app:boxStrokeColor属性设置为@null

答案 7 :(得分:0)

将TextInputLayout的背景设置为可绘制的,将TextInputEditText的背景设置为透明的会删除下划线:

<com.google.android.material.textfield.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:hint="@string/email"
        android:background="@drawable/blue_drawable"
        app:endIconMode="clear_text"
        app:endIconTint="@color/black"
        app:hintTextColor="@color/black">

    <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/black"
            android:background="@android:color/transparent"
            android:textSize="18sp"
            android:layout_margin="8dp" />

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

blue_drawable.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
<corners android:radius="20dp"/>
<solid android:color="@android:color/holo_blue_bright"/></shape>

enter image description here

答案 8 :(得分:0)

res / drawable

上创建选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:alpha="0.01" android:color="?attr/background" android:state_focused="true"/>
    <item android:alpha="0.01" android:color="?attr/background" android:state_hovered="true"/>
    <item android:alpha="0.01" android:color="?attr/background" android:state_enabled="false"/>
    <item android:alpha="0.01" android:color="?attr/background"/>
</selector>

背景在此处-接近您背景的任何颜色。

方法1 然后将其设置为您的TextInputLayout

<com.google.android.material.textfield.TextInputLayout
...
  app:boxStrokeColor="@drawable/text_input_selector"
...

方法2 ,槽式:

styles.xml

<style name="vm_textFilledBox" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
        <item name="boxStrokeColor">@drawable/text_input_selector</item>
</style>
 <com.google.android.material.textfield.TextInputLayout
...
    style="@style/vm_textFilledBox"

答案 9 :(得分:0)

使您的自定义TextInputLayout如此

chuck1length

答案 10 :(得分:0)

<style name="Theme.MyApp" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="textInputStyle">@style/Widget.MyApp.TextInputLayout</item>
</style>

<style name="Widget.MyApp.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
    <item name="boxStrokeWidth">0dp</item>
    <item name="boxStrokeWidthFocused">0dp</item>
</style>

答案 11 :(得分:0)

简便的方法;

x

答案 12 :(得分:0)

注意:有关在输入TextInputEditText时删除下划线的答案

搜索了六个小时的有关如何从TextInputEditText删除下划线后,我发现了一个单行解决方案,只需将android:inputType="text|textNoSuggestions"放在您的TextInputEditText内即可。

现在我在输入TextInputEditText时没有得到任何下划线

答案 13 :(得分:-2)

请在TextInputLayout中设置boxBackgroundMode。这是在TextInputLayout中删除下划线的简单正确的方法

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

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

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