【问题标题】:Is there a way to create non-filled TextInputEditText with TextInputLayout in 1.1.0+?有没有办法在 1.1.0+ 中使用 TextInputLayout 创建未填充的 TextInputEditText?
【发布时间】:2019-11-19 10:06:46
【问题描述】:

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

我尝试将 TextInputEditText 框背景设置为透明颜色,但最终使它们的填充完全白色,而不是使它们透明并暴露它们背后的东西(这是一种具有渐变的品牌颜色,跨越超过编辑字段,这就是为什么我不能将其颜色设置为背景颜色,因为它不适合渐变)。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    您还可以在应用的主题中使用textInputStyle 属性为文本输入布局设置应用范围的样式(也应用上述属性)并提供所需的样式。

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

    【讨论】:

    • 下面的行也随着解决方案消失了
    【解决方案2】:

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

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

    <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>
    

    【讨论】:

    • 我没有尝试过您的解决方案,但我找到了一个更简单的解决方案。
    • 设置boxBackgroundMode="none" 有效,但它也删除了EditText's 底线,这不是我的用例所需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    相关资源
    最近更新 更多