首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TextInputLayout框颜色

TextInputLayout框颜色
EN

Stack Overflow用户
提问于 2019-05-24 19:45:07
回答 2查看 422关注 0票数 1

使用下面的xml元素,我可以正确地将TextInputLayout框涂成白色,但那只是在单击它之后。初始颜色仍为默认颜色。

代码语言:javascript
复制
     <com.google.android.material.textfield.TextInputLayout
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:hintTextColor="@color/colorWhite"
        app:boxStrokeColor="@color/colorWhite"
        app:boxBackgroundColor="@color/colorPrimaryLight">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:imeOptions="actionSearch"
            android:inputType="textAutoComplete"
            android:outlineAmbientShadowColor="@color/colorWhite"
            android:textColor="@color/colorWhite"
            android:maxLines="1" />

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

有没有一种方法可以使框和提示文本的颜色不仅在实际给予TextInput焦点后才适用?

EN

回答 2

Stack Overflow用户

发布于 2019-05-24 20:03:44

在res/color/text_input_box_STROK.xml中创建Selector,如下所示:

代码语言:javascript
复制
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#fcc" android:state_focused="true"/>
    <item android:color="#cfc" android:state_hovered="true"/>
    <item android:color="#ccf"/>
</selector>

然后在你的styles.xml中放入:

代码语言:javascript
复制
<style name="TextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
    <item name="boxStrokeColor">@color/text_input_box_stroke</item>
    <item name="boxStrokeWidth">2dp</item>
</style>

最后,在TextInputLayout中使用该样式

代码语言:javascript
复制
<com.google.android.material.textfield.TextInputLayout
    style="@style/TextInputLayoutStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:hintTextColor="@color/colorWhite"
    app:boxStrokeColor="@color/colorWhite"
    app:boxBackgroundColor="@color/colorPrimaryLight">
    ........
</com.google.android.material.textfield.TextInputLayout>

color.xml中添加text_input_box_color

代码语言:javascript
复制
<color name="mtrl_textinput_default_box_stroke_color" tools:override="true">#fff</color>

有关更多细节,请查看here

票数 0
EN

Stack Overflow用户

发布于 2019-09-11 15:31:03

要更改TextInputLayout中的颜色,只需使用如下内容:

代码语言:javascript
复制
  <style name="OutlinedBoxColor" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <!-- border color in OutlinedBox
    <item name="boxStrokeColor">@color/text_input_layout_stroke_color</item>

    <!-- The color of the label when it is collapsed and the text field is active -->
    <item name="hintTextColor">@color/singleColor</item>
    <!-- The color of the label in all other text field states (such as resting and disabled) -->
    <item name="android:textColorHint">@color/.....</item>
  </style>

TextInputLayout被聚焦和未被聚焦时的结果

您应该对这些颜色使用颜色选择器:

对于boxStrokeColor

代码语言:javascript
复制
<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/colorOnSurface"/>
</selector>

对于android:textColorHint

代码语言:javascript
复制
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:alpha="0.38" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
  <item android:alpha="0.6" android:color="?attr/colorOnSurface"/>
</selector>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56292017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档