我有一个非常具体的问题,即当文本输入框未聚焦时更改文本框的轮廓。我似乎找不到用于更改“未聚焦”文本框边框颜色的属性。
这是我要做的事的直观示例:
此(文本框):边框的颜色不是白色。目前还没有集中。 单击它后,它变成白色:
我不知道需要更改什么,似乎没有可以更改的属性。
我也使用了材料设计文本输入布局样式,尽管我看不出这是否会影响它。
这是我在文本框中的xml代码:
<other layouts ... >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_gravity="bottom"
android:layout_margin="5dp"
android:background="@drawable/item_recycler_view">
<android.support.design.widget.TextInputLayout
android:id="@+id/dialog_text_input_layout"
style="@style/Widget.AppTheme.TextInputLayoutList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Quick Add..."
android:textColorHint="@color/colorWhite"
app:boxStrokeColor="@color/colorWhite"
app:errorEnabled="true"
>
<android.support.design.widget.TextInputEditText
android:id="@+id/dialog_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:maxLines="1"
android:textColor="@color/colorWhite"
android:textSize="14sp" />
</android.support.design.widget.TextInputLayout>
</RelativeLayout>
</other layouts...>
这是我为此使用的样式:
<style name="TextAppearance.AppTheme.TextInputLayout.HintTextAlt" parent="TextAppearance.MaterialComponents.Subtitle2">
<item name="android:textColor">@color/colorWhite</item>
</style>
<style name="Widget.AppTheme.TextInputLayoutList" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="hintTextAppearance">@style/TextAppearance.AppTheme.TextInputLayout.HintTextAlt</item>
<item name="boxStrokeColor">@color/colorWhite</item>
<item name="boxCornerRadiusBottomEnd">5dp</item>
<item name="boxCornerRadiusBottomStart">5dp</item>
<item name="boxCornerRadiusTopEnd">5dp</item>
<item name="boxCornerRadiusTopStart">5dp</item>
<item name="android:layout_margin">5dp</item>
</style>
谢谢,欢迎提供任何帮助或建议!
答案 0 :(得分:21)
使用材料成分库,只需使用 boxStrokeColor
属性。
它可以与选择器一起使用。
只需使用以下内容:
<com.google.android.material.textfield.TextInputLayout
app:boxStrokeColor="@color/text_input_layout_stroke_color"
..>
具有:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="..." android:color="@color/...." android:state_focused="true"/>
<item android:alpha="..." android:color="@color/...." android:state_hovered="true"/>
<item android:alpha="..." android:color="@color/...." android:state_enabled="false"/>
<item android:alpha="..." android:color="@color/...."/> <!-- unfocused -->
</selector>
答案 1 :(得分:12)
如果要在未聚焦模式下将轮廓框的颜色设置为默认黑色,而不是默认的黑色,则必须在colors.xml
文件中添加此行,以覆盖轮廓框的默认颜色。
原样复制此行。您可以将颜色更改为所需的颜色。
<color name="mtrl_textinput_default_box_stroke_color">#fff</color>
直到现在它将起作用,为了对TextInputLayout进行更多控制,您可以在styles.xml中添加此样式
<style name="TextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
<item name="boxStrokeColor">#fff</item>
<item name="boxStrokeWidth">2dp</item>
</style>
然后将主题添加到TextInputLayout
android:theme="@style/TextInputLayoutStyle"
答案 2 :(得分:1)
Answer from Amjad是正确的,但是从解决此1.1.0-alpha02的issue(可能甚至是alpha01)开始,就可以使用相同的boxStrokeColor
在颜色状态列表中定义颜色属性,例如在lib中是如何完成的:
<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>
答案 3 :(得分:0)
app:boxStrokeColor="#000000"
app:boxStrokeWidthFocused="0.5dp"
app:boxStrokeWidth="0.5dp"
这将使框颜色恒定事件成为焦点!