8

我正在研究 Material design Material.io 的材质组件,一切都很好,我试图使用 MDC 的 TextField 组件来创建一个材质下拉微调器,但我似乎找不到任何相关文档,是否可以使用 MDC 创建微调器?如果是这样,我在哪里可以找到它的文件?

在 TextField 的目录中看到一个微调器,我可以做这样的事情吗?:

在此处输入图像描述

4

2 回答 2

19

这正是您所需要的

https://material.io/develop/android/components/menu/#exposed-dropdown-menus

首先在 Textinputlayout 中添加 AutocompleteTextView

<com.google.android.material.textfield.TextInputLayout
    style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint_text">

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

</com.google.android.material.textfield.TextInputLayout>

然后你可以像这样设计菜单项:

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

在 java 中初始化适配器,如:

String[] COUNTRIES = new String[] {"Item 1", "Item 2", "Item 3", "Item 4"};

ArrayAdapter<String> adapter =
        new ArrayAdapter<>(
            getContext(),
            R.layout.dropdown_menu_popup_item,
            COUNTRIES);

AutoCompleteTextView editTextFilledExposedDropdown =
    view.findViewById(R.id.filled_exposed_dropdown);
editTextFilledExposedDropdown.setAdapter(adapter);

您可以更改样式以满足各种变化,例如:

填充 style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"

概述

将此样式应用于您的 TextInputLayout:

style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"

密集填充

将此样式应用于您的 TextInputLayout:

style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.Dense.ExposedDropdownMenu"

密集概述

将此样式应用于您的 TextInputLayout:

style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"

于 2019-05-21T13:09:07.313 回答
7

在 Material Design 网站上,它标记为 Planned for Android(Material Menus),我还注意到 Material Design 的Twitter 提要它刚刚发布在 Web 上。所以希望很快就会发布一个实际的实现。

于 2018-12-18T07:39:07.980 回答