【问题标题】:How to set background color on autocomplete exposed dropdown menu?如何在自动完成暴露的下拉菜单上设置背景颜色?
【发布时间】:2019-10-31 11:13:06
【问题描述】:

目前正在使用材料设计组件和菜单指南设置一个公开的下拉菜单项。但是,当显示我的自动完成文本视图时,它的背景与我的其他文本字段不同。

我尝试将 TextInputLayout 上的 boxBackgroundColor 属性设置为不同的颜色并修改自动完成 TextView 上的背景。我也厌倦了看看是否可以修改菜单的弹出主题,但没有运气。

 // In the onCreateView of fragment

        ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(), R.layout.dropdown_menu_popup_item, getResources().getStringArray(R.array.down_payment_method_selection));
        monthsAtEmploymentSelection.setAdapter(adapter);

<com.google.android.material.textfield.TextInputLayout
                style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginEnd="8dp"
                android:hint="@string/months_at_employment_hint"
                app:boxBackgroundColor="@color/white">

                <AutoCompleteTextView
                    android:id="@+id/months_at_employment_selection"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />

            </com.google.android.material.textfield.TextInputLayout>
<!--dropdown_menu_popup_item.xml-->
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:ellipsize="end"
    android:maxLines="1"
    android:textAppearance="?attr/textAppearanceSubtitle1"
    android:background="@color/white"/>

我希望背景是透明的或与当前设置为白色的背景相匹配。目前它是与字段不匹配的灰白色。

【问题讨论】:

    标签: android material-design material-components mdc-components material-components-android


    【解决方案1】:

    您在 AutoCompleteTextView 中使用了 style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu" 作为样式。

    style.xml 中的浅灰色更改为您的特定颜色。

    【讨论】:

    • 该样式是在 Material Components 库中定义的,因此我的 style.xml 资源中没有任何更改,也没有定义浅灰色。为了使用材料指南文本字段布局的下拉/微调器,需要将该样式添加到 TextInputLayout see documentation
    【解决方案2】:

    通过在布局文件的 TextInputLayout 字段上设置属性app:boxBackgroundColor="@color/yourcolor" 应该可以正确修改背景颜色。

    您可能还需要设置子元素android:background="@null",在我的例子中是 AutoCompleteTextView 以正确遵守 boxBackgroundColor 属性。根据documentation,您需要设置子元素背景颜色的唯一时间是使用 edittext 字段,但是由于应用程序桥主题的设置方式,我发现我需要使用自动完成视图来设置它。

    【讨论】:

      【解决方案3】:

      感谢this issue,我了解到这可以通过编程方式完成:

      val autoCompleteTv = binding.yourAutoCompleteTextView
      autoCompleteTv.setDropDownBackgroundDrawable(
              ColorDrawable(ContextCompat.getColor(context, R.color.your_desired_color))
      )
      

      【讨论】:

      • 这里的答案更准确。
      猜你喜欢
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多