Skip to content

Spinner

xuexiangjys edited this page Apr 26, 2022 · 9 revisions

Android最常用的选择器控件。

MaterialSpinner

遵循谷歌Material Design设计风格的下拉框,API与系统同步,可方便设置下拉样式和点击效果,支持编辑,支持下拉、选择监听。使用MaterialEditSpinner可支持编辑。

MaterialSpinner本质上是TextView + PopupWindow,而MaterialEditSpinner是EditText + PopupWindow的组合。

  • 演示效果

  • 使用案例
<com.xuexiang.xui.widget.spinner.materialspinner.MaterialSpinner
    style="@style/Material.SpinnerStyle"
    android:layout_marginLeft="40dp"
    android:layout_marginTop="?attr/xui_config_content_spacing_vertical"
    android:enabled="false"
    app:ms_entries="@array/sort_mode_entry" />
  • 属性表: (MaterialSpinner)
属性名 类型 默认值 备注
ms_entries reference / 下拉框选择的内容
ms_arrow_image reference / 下拉框箭头的资源
ms_arrow_tint color / 下拉框箭头的颜色, 默认和字体的颜色一样
ms_hide_arrow boolean true 下拉框是否有箭头
ms_background_color color Color.WHITE 下拉框背景的颜色
ms_background_selector integer / 下拉框背景点击的效果
ms_text_color color / 下拉框字体的颜色
ms_dropdown_max_height dimension 0 下拉框 下拉条目最大的高度
ms_dropdown_height dimension wrap_content(fill_parent、match_parent) 拉框 下拉条目的样式
ms_dropdown_bg reference / 下拉框 下拉条目的背景
ms_in_dialog boolean false 是否使用在dialog中
ms_pop_anim_style reference / 弹出窗的动画样式

常用方法

  • 设置下拉列表的内容:setItems(T... items)

  • 设置监听:

    • 点击列表选择监听:setOnItemSelectedListener(OnItemSelectedListener onItemSelectedListener)
    • 未进行选择的监听:setOnNothingSelectedListener(OnNothingSelectedListener onNothingSelectedListener)
  • 设置下拉列表默认选择的序列:setSelectedIndex(int position)

  • 设置下拉列表默认选中的内容:setSelectedItem(T item)

  • 设置下拉列表的适配器:

    setAdapter(ListAdapter adapter)
    setAdapter(MaterialSpinnerAdapter<T> adapter)
    
  • 伸缩下拉列表

    • 展开显示:expand()
    • 收起隐藏:collapse()

EditSpinner

可编辑,并且提供输入联想功能的下拉框。

  • 演示效果

  • 使用案例
<com.xuexiang.xui.widget.spinner.editspinner.EditSpinner
    android:id="@+id/editSpinner"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:layout_marginLeft="20dp"
    app:es_entries="@array/sort_mode_entry"
    app:es_hint="@string/lab_please_select"/>
  • 属性表: (EditSpinner)
属性名 类型 默认值 备注
es_hint string / 输入提示
es_height dimension R.attr.ms_item_height_size 输入框的高度
es_textSize dimension R.attr.nlui_config_size_spinner_text 输入框的字体大小
es_textColor color #333333 输入框的字体颜色
es_arrowImage reference / 箭头图谱的资源
es_background reference / 输入框的背景
es_maxLine integer 1 输入框支持的最大行数
es_entries reference / 默认可选性内容
es_dropdown_bg reference R.drawable.ms_drop_down_bg_radius 下拉框 下拉条目的背景
es_enable boolean true 下拉输入框是否可编辑
es_maxLength integer / 下拉框输入可输入的最大字符长度
es_maxEms integer / 下拉框输入可输入的最大字符宽度
es_popAnimStyle reference / 弹出窗的动画样式

常用方法

  • 设置默认可选项集合:setItems(String[] data)
  • 设置下拉框条目点击监听:setOnItemClickListener(AdapterView.OnItemClickListener listener)
  • 设置输入框字体的颜色: setTextColor(int color)
  • 设置输入框的背景颜色:setBackgroundSelector(int backgroundSelector)
  • 设置输入框的字体大小:setTextSize(float textSize)
  • 设置输入框的提示信息:setHint(String hint)
  • 设置下拉框适配器:setAdapter(BaseEditSpinnerAdapter adapter)
  • 设置输入框是否可以编辑:setEnabled(boolean enabled)
  • 设置输入框输入的类型:setInputType(int type)

DropDownMenu

可自定义布局的下拉选择菜单。

  • 使用案例
<com.xuexiang.xui.widget.spinner.DropDownMenu
    android:id="@+id/ddm_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  • 属性表: (ExpandableLayout)
属性名 类型 默认值 备注
ddm_contentLayoutId reference / 下拉选择菜单的内容布局
ddm_dividerColor color R.attr.xui_config_color_separator_dark 菜单垂直分割线的颜色
ddm_dividerWidth dimension 0.5dp 菜单垂直分割线的宽度
ddm_dividerMargin dimension 10dp 菜单垂直分割线的Margin
ddm_underlineColor color R.attr.xui_config_color_separator_light 菜单底线的颜色
ddm_underlineHeight dimension 1dp 菜单底线的高度
ddm_maskColor color #88888888 半透明遮罩颜色
ddm_menuTextSize dimension 14sp 菜单文字的字体大小
ddm_menuTextPaddingHorizontal dimension 5dp 菜单文字水平padding
ddm_menuTextPaddingVertical dimension 12dp 菜单文字垂直padding
ddm_menuTextSelectedColor color R.attr.colorAccent 菜单文字选中的颜色
ddm_menuTextUnselectedColor color R.attr.xui_config_color_content_text 菜单文字未选中的颜色
ddm_menuSelectedIcon reference R.drawable.ddm_ic_arrow_up 菜单选择时的图标
ddm_menuUnselectedIcon reference R.drawable.ddm_ic_arrow_down 菜单未选择时的图标
ddm_menuBackgroundColor color Color.WHITE 菜单的背景颜色
ddm_menuHeightPercent float 0.5 选择菜单的高度/屏幕高度 占比
Clone this wiki locally