TextInputLayout styling

跟風遠走 提交于 2021-01-20 07:28:28

问题


I have problem with my custom TextInputLayout. Here is my code

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/phone"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:theme="@style/CustomTextInputLayout"
    android:hint="@string/phone_number"
    android:layout_marginTop="8dp"
    android:layout_marginStart="16dp"
    android:layout_marginEnd="16dp"
    app:startIconDrawable="@drawable/account"
    android:background="@color/bg_light_gray"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/page_description">

    <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="?attr/listPreferredItemHeight"
        android:background="@color/bg_light_gray"
        android:inputType="phone"
        android:singleLine="true" />
</com.google.android.material.textfield.TextInputLayout>

Here is my code from style.xml file

<style name="CustomTextInputLayout" parent="Widget.Design.TextInputLayout">
    <item name="errorTextAppearance">@style/ErrorText</item>
    <item name="colorControlNormal">@color/green_txt</item>
    <item name="colorControlActivated">@color/orange</item>
    <item name="colorControlHighlight">@color/orange</item>
</style>

I want to make a baseline color of TextInputLayout to orange, but now it is gray. Also, I place an icon, which has its original color orange, but after placing it became dark gray. Now I am not understanding why it is happening and how to fix this problem. Can someone help me with that?


回答1:


I want to make base line color of TextInputLayout to orange

Just use a Material theme (for example Widget.MaterialComponents.TextInputLayout.FilledBox) the app:boxStrokeColor attribute to change the color.

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/custom_end_icon"
    style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
    app:boxStrokeColor="@color/text_input_selector

where the selector is something like:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="?attr/colorPrimary" android:state_focused="true"/>
  <item android:alpha="0.87" android:color="?attr/colorOnSurface" android:state_hovered="true"/>
  <item android:alpha="0.12" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
  <item android:alpha="0.38" android:color="?attr/colorAccent"/>
</selector>

Also I place an icon, which has its original color orange, but after placing it became dark gray.

Use the app:endIconTint attribute to apply a color or a color selector to your end icon.

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/custom_end_icon"
    android:hint="Hint text"
    style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
    app:boxStrokeColor="@color/text_input_selector"
    app:endIconMode="custom"
    app:endIconDrawable="@drawable/ic_add_24px"
    app:endIconTint="@color/text_input_selector"



来源:https://stackoverflow.com/questions/57801486/textinputlayout-styling

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!