Android弹窗ListPopupWindow的简单应用详解
脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用
概述
常用的弹窗有菜单,或者Dialog,但更加人性化和可自定义的还是PopupWindow
如果只是展示列表数据或者弹窗列表选择,直接使用ListPopupWindow即可,不用再单独去设置布局。
如果想要更加多样化的那就自定义一个布局,使用PopupWindow即可,也不复杂。
用法
自定义ListPopupWindow类
1 2 3 4 5 6 | public class ChargeItemSumPop extends ListPopupWindow { public ChargeItemSumPop(Context context) { super (context); } } |
属性设置
因为里面已经有一个列表控件了,所以,不用再绑定布局
1 2 3 4 | setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); setWidth( 600 ); setModal( true ); setBackgroundDrawable( new ColorDrawable( 0xCC000000 )); |
绑定Adapter
1 2 3 4 5 6 7 8 9 | //添加想要展示的数据 Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); List<Integer> lstYear = new ArrayList<>(); for ( int i = 2015 ; i <= year; i++){ lstYear.add(i); } ArrayAdapter<Integer> adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_dropdown_item, lstYear); setAdapter(adapter); |
Activity监听
1 2 3 4 5 6 7 | ChargeDateYearPop pop = new ChargeDateYearPop( this ); pop.setOnItemClickListener((adapterView, view, i, l) -> { bindingView.chargeYear.setText(String.valueOf(adapterView.getAdapter().getItem(i))); pop.dismiss(); }); pop.setAnchorView(bindingView.chargeYear); pop.show(); |
完整弹窗类
与普通的弹窗不一样的地方在于这里面是一个列表,所以要绑定Adapter进行展示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class ChargeDateYearPop extends ListPopupWindow { public ChargeDateYearPop(Context context) { super (context); setHeight( 800 ); setWidth( 200 ); setModal( true ); setBackgroundDrawable( new ColorDrawable( 0xCC000000 )); initView(context); } private void initView(Context context) { Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); List<Integer> lstYear = new ArrayList<>(); for ( int i = 2015 ; i <= year; i++){ lstYear.add(i); } Collections.sort(lstYear); Collections.reverse(lstYear); ArrayAdapter<Integer> adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_dropdown_item, lstYear); setAdapter(adapter); } } |
Activity
1 2 3 4 5 6 7 8 9 10 11 | private void showChargeDateYear(){ ChargeDateYearPop pop = new ChargeDateYearPop( this ); pop.setOnItemClickListener((adapterView, view, i, l) -> { bindingView.chargeYear.setText(String.valueOf(adapterView.getAdapter().getItem(i))); pop.dismiss(); //重载数据等的操作 //mPresenter.getCharges(getChargeDate()); }); pop.setAnchorView(bindingView.chargeYear); pop.show(); } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
Android App开发中HTTP扩展包OkHttp的入门使用指南
OkHttp包为安卓开发中基于HTTP协议的网络编程提供了很大便利,这里我们就来看一下Android App开发中HTTP扩展包OkHttp的入门使用指南:2016-07-07Android studio git创建与删除标签(Tag)的教程详解
这篇文章主要介绍了Android studio git创建与删除标签(Tag)的教程详解,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-12-12
最新评论