android自定义下拉筛选,Android下拉筛选菜单

本文介绍如何在Android中实现自定义下拉筛选菜单,包括DropdownButton和DropdownColumnView的使用,以及如何进行数据设置和点击事件监听。提供了一个完整的例子,包括引入依赖、初始化、设置数据和自定义布局的操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下拉筛选菜单

625332134c6f4d4600884b99daebf603.png

栗子惯例,先上GIF

625332134c6f4d4600884b99daebf603.png

使用姿势

引入

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

dependencies {

compile 'com.github.FJ917:FJDropDownMenu:v1.1'

}

使用

更新v1.1版本

新增适配Fragment,使用区别在于,初始化的方法

DropdownUtils.initFragment(getActivity(),this,view, mask);

ViewUtils.injectFragmentViews(this,view, mask);

结构:由DropdownButton和DropdownColumnView构成

android:layout_height="match_parent"

android:layout_weight="match_parent" />

app:columnType="singleRow"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

自定义属性attrs.xml

DropdownButton属性

属性

说明

isLine

是否显示横线

selectedTextColor

选中文字颜色

selectedIcon

选中图标

lineColor

选中横线颜色

notSelectedTextColor

未选中文字颜色

notSelectedIcon

未选中图标

DropdownColumnView属性

属性

说明

columnSelectedIcon

列选中图标

columnType

singleRow(单列),doubleRow(双列),threeRow(三列),randomView(任意布局)

在java 代码中需要对DropdownButton和DropdownColumnView加上注解@ViewInject()

@ViewInject(R.id.btnRandomView)

DropdownButton btnRandomView;

@ViewInject(R.id.dcRandomView)

DropdownColumnView dcRandomView;

初始化

DropdownUtils.init(this, mask);

ViewUtils.injectViews(this, mask);

设置数据

//单列

lvType.setSingleRow(this)

.setSingleRowList(DataBean.getType(), -1) //单列数据

.setButton(btnType) //按钮

.show();

//双列

lvAnimal.setDoubleRow(this)

.setSingleRowList(DataBean.getAnimalSingle(), -1)//单列数据

.setDoubleRowList(DataBean.getAnimalDouble(), -1)//双列数据

.setButton(btnAnimal) //按钮

.show();

//三列

lvRegion.setThreeRow(this)

.setSingleRowList(DataBean.getRegionProvince(), -1) //单列数据

.setDoubleRowList(DataBean.getRegionCity(), -1)//双列数据

.setThreeRowList(DataBean.getRegionArea(), -1)//三列数据

.setButton(btnRegion) //按钮

.show();

点击事件接口

implements DropdownI.SingleRow, DropdownI.DoubleRow,DropdownI.ThreeRow

/**

* 单列表返回

*/

@Override

public void onSingleChanged(DropdownItemObject singleRowObject) {

Log.d("类型",singleRowObject.getValue());

}

/**

* 双列表返回

*/

@Override

public void onDoubleSingleChanged(DropdownItemObject singleRowObject) {

Log.d("动物",singleRowObject.getValue());

}

@Override

public void onDoubleChanged(DropdownItemObject doubleRowObject) {

Log.d("动物子类",doubleRowObject.getValue());

}

/**

* 三列表返回

*/

@Override

public void onThreeSingleChanged(DropdownItemObject singleRowObject) {

Log.d("省",singleRowObject.getValue());

}

@Override

public void onThreeDoubleChanged(DropdownItemObject doubleRowObject) {

Log.d("市",doubleRowObject.getValue());

}

@Override

public void onThreeChanged(DropdownItemObject threeRowObject) {

Log.d("区",threeRowObject.getValue());

}

任意布局

btnRandomView.setText("弹出自定义布局");

dcRandomView.setRandom(this)

.setRandomView(R.layout.random_view)

.setButton(btnRandomView) //按钮

.show();

布局返回接口

implements DropdownI.RandomView

@Override

public void onRandom(View view) {

Button btnRandom = (Button) view.findViewById(R.id.btnRandom);

final EditText etRandom = (EditText) view.findViewById(R.id.etRandom);

btnRandom.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(RandomViewActivity.this, etRandom.getText().toString(), Toast.LENGTH_SHORT).show();

DropdownUtils.hide();//点击后是否收起布局

}

});

}

欢迎加入QQ交流群657206000点我加入

625332134c6f4d4600884b99daebf603.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值