Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove white box from TextInputLayout

Today I have just updated my dependencies of material design

from 1.0.0 to 1.1.0-alpha09

implementation 'com.google.android.material:material:1.1.0-alpha09'

Now i"m getting strange issue in com.google.android.material.textfield.TextInputLayout

Here is my Code

            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/emailTextInputLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/_10sdp">

            <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/emailTextInputEditText"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/hint_enter_email"
                    android:imeOptions="actionNext"
                    android:inputType="textEmailAddress"/>
        </com.google.android.material.textfield.TextInputLayout>

after updating the dependencies I'm getting boxed design in my TextInputLayout

Output of above code

enter image description here

if i use implementation 'com.google.android.material:material:1.0.0' I'm getting expected result

enter image description here

Can anybody help me to solve this issue

If need more information please do let me know. Thanks in advance. Your efforts will be appreciated.

UPDATE

I have already tried app:boxBackgroundMode="none" them I'm getting this

output ,

if i use app:boxBackgroundMode="outline" then getting this

output

SOLVED

No need to use boxBackgroundMode

You need to add @style/Widget.Design.TextInputLayout in your TextInputLayout

SAMPLE CODE

        <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/emailTextInputLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/_10sdp"
                style="@style/Widget.Design.TextInputLayout"
                app:errorTextAppearance="@style/error_appearance"
                android:textColorHint="@android:color/white">

            <com.google.android.material.textfield.TextInputEditText
                    android:layout_width="match_parent"
                    android:id="@+id/emailTextInputEditText"
                    android:layout_height="wrap_content"
                    android:backgroundTint="@android:color/white"
                    android:gravity="center"
                    android:hint="@string/hint_enter_email"
                    android:imeOptions="actionNext"
                    android:textColorHint="@android:color/white"
                    android:inputType="textEmailAddress"
                    android:textColor="@android:color/white"
                    android:textSize="@dimen/_15ssp"/>
        </com.google.android.material.textfield.TextInputLayout>

OUTPUT enter image description here

like image 495
Goku Avatar asked Aug 29 '19 05:08

Goku


People also ask

How do I remove the default padding in TextInputLayout?

You can just set the start and end padding on the inner EditText to 0dp. Here's a screenshot with Show Layout Bounds turned on so you can see that the hints go all the way to the edge of the view.

How do I remove TextInputLayout error?

Now you can simply do input. setError(..) for new error and input. setErrorEnabled(false) to remove it.

How do I change the bottom line color in TextInputLayout?

To change the bottom line color you have to use the attribute: boxStrokeColor . You can also apply these attributes in your layout: <com. google.


3 Answers

To revert back to old style with no filed background but only bottom border, one should use following style:

<com.google.android.material.textfield.TextInputLayout
           ...
           style="@style/Widget.Design.TextInputLayout"
           ....
           >
</com.google.android.material.textfield.TextInputLayout>

Using theme Widget.Design.TextInputLayout will generate expected output like below:

enter image description here

like image 185
Jeel Vankhede Avatar answered Nov 11 '22 13:11

Jeel Vankhede


Using a material Theme the default style used by the TextInputLayout is @style/Widget.MaterialComponents.TextInputLayout.FilledBox

enter image description here

To obtain something similar just change the background color using the boxBackgroundColor attribute:

  <style name="CustomFilledBox" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
    <item name="boxBackgroundColor">@myColor</item>
  </style>

enter image description here

Also use the android:hint="@string/hint_enter_email" in the TextInputLayout not in the TextInputEditText

like image 43
Gabriele Mariotti Avatar answered Nov 11 '22 14:11

Gabriele Mariotti


For me using @style/Widget.Design.TextInputLayout produced undesirable formatting results, specifically alignment issues with the editText box.

I used boxBackgroundMode set to none for awhile, and after updating material design in my project the error icon mentioned started showing. May be a bug (https://issuetracker.google.com/issues/122445449).

For now I'm still setting the boxBackgroundMode to none, and hiding the error icon by setting the color to transparent. This way I keep the material design.

app:boxBackgroundMode="none"
app:errorIconTint="@android:color/transparent"



<com.google.android.material.textfield.TextInputLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="5dp"
        app:boxBackgroundMode="none"
        app:errorIconTint="@android:color/transparent"
        app:hintEnabled="false">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/message_ellipsis"
            android:inputType="textCapSentences|textMultiLine"
            android:paddingTop="10dp" />
    </com.google.android.material.textfield.TextInputLayout>
like image 33
Andrew Avatar answered Nov 11 '22 15:11

Andrew