如何设置TextInputLayout outlinedbox浮动提示背景色

How to set TextInputLayout's outlined box floating hint background color

如何将文本输入布局轮廓框样式中的浮动提示背景色改为透明。我认为所附图片清楚地说明了问题它应该是笔划上方的红色和下方的白色)。我所做的改变背景本身是:

<style name="App.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
    <item name="boxBackgroundColor">@color/white</item>
</style>

非常感谢任何帮助

如果您查看 https://material.io/develop/android/components/text-fields/ 中的样式文档,您会发现 "Filled text view" 支持 boxBackgroundColor 属性,而 "Outlined text field" 不支持。

所以我认为这个问题没有合适的解决方案,除非您在布局中找到内部提示 TextView 并手动更改背景。但这会很麻烦,因为它取决于 TextInputLayout 保持不变的实现。

我不知道它是否有帮助,但我设法在 TextInputLayout in outline 方框模式的方框描边内有一个统一的背景。

在我的示例中,方框角的半径为 10dp (text_input_layout_box_radius)。此外,TextInputEditText 的高度为 80dp (text_input_edit_text_height)。

我为 TextInputLayout 定义了一个样式,我在其中应用了自定义背景形状:

    <style name="MyTextInputLayout" parent="Widget.Design.TextInputLayout">
        <item name="android:background">@drawable/text_input_background</item>
        <!-- ... other customizations ... -->
    </style>

text_input_background.xml 可绘制对象定义为图层列表:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:height="@dimen/text_input_edit_text_height"
        android:top="@dimen/text_input_background_padding_top">
        <shape>
            <corners android:radius="@dimen/text_input_layout_box_radius" />
            <solid android:color="@color/<your_background_color>" />
        </shape>
    </item>
</layer-list>

text_input_background_padding_top 等于 13dp,它在这里发挥了作用。就我而言,它将形状置于框内的中心。它需要补偿在我的例子中是 30sp 的提示高度,它可以用 hintTextAppearance 属性修改。您可能必须找到与您的提示文本高度相对应的正确填充值。

如果有帮助请告诉我!