有没有一种方法可以在1.1.0+版本中使用TextInputLayout创建未填充的TextInputEditText?

时间:2019-07-09 19:39:36

标签: android-textinputlayout android-textinputedittext material-components-android

我正在尝试从材料组件1.0.0迁移到1.1.0-alpha07,以便能够使用ExposedDropdown样式。 但是,这会弄乱我所有的TextInputEditText,因为它们既不会概述也不会填充。

我尝试将TextInputEditText的盒子背景设置为透明颜色,但是最终使它们的填充完全变成白色,而不是使它们透明并暴露其背后的内容(这是一种具有跨度梯度的品牌颜色除了编辑字段之外,这就是为什么我不能将其颜色设置为背景颜色,因为它不适合渐变)。

所以,问题是:有什么办法可以将老式的非填充EditText保留在1.1.0+中(同时仍在TextInputLayout中使用它们)?

注意: 我不得不说,排除一个简单的选项来使编辑字段不填充(以前是这样)是一个巨大的错误,因为它几乎完全关闭了无痛迁移到1.1.0的过程,您现在基本上必须迫使设计更改首先。

2 个答案:

答案 0 :(得分:0)

TextInputEditText背景设置为透明对我来说很有效。 我主题的父级是Theme.MaterialComponents.DayNight.DarkActionBar

另一种可能性是为您的ThemeOverlay使用editTextStyle

<style name="Widget.YourTheme.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.FilledBox>
    <item name="materialThemeOverlay">@style/ThemeOverlay.YourTheme.TextInputEditText</item>
</style>

<style name="ThemeOverlay.YourTheme.TextInputEditText parent="ThemeOverlay.MaterialComponents.TextInputEditText.FilledBox">
    <item name="editTextStyle">@style/Widget.YourTheme.TextInputEditText item>
</style>


<style name="Widget.YourTheme.TextInputEditText parent="Widget.MaterialComponents.TextInputEditText.FilledBox">
    <item name="android:background">@android:color/transparent</item>
</style>


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

答案 1 :(得分:0)

我设法找到了一个相当简单的答案。

解决方案是将app:boxBackgroundMode="none"与填充框样式配合使用。

您还可以在应用程序主题中使用textInputStyle属性,为文本输入布局(也应用上述属性)设置整个应用程序样式。

作为旁注,这只是指出灾难性的缺乏易于访问的文档和指南,困扰着该库。