栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android弹窗ListPopupWindow的简单应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android弹窗ListPopupWindow的简单应用

概述

常用的弹窗有菜单,或者Dialog,但更加人性化和可自定义的还是PopupWindow
如果只是展示列表数据或者弹窗列表选择,直接使用ListPopupWindow即可,不用再单独去设置布局。
如果想要更加多样化的那就自定义一个布局,使用PopupWindow即可,也不复杂。

用法 自定义ListPopupWindow类
public class ChargeItemSumPop extends ListPopupWindow {

	public ChargeItemSumPop(Context context) {
		super(context);
	}
}
属性设置

因为里面已经有一个列表控件了,所以,不用再绑定布局

setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
setWidth(600);
setModal(true);
setBackgroundDrawable(new ColorDrawable(0xCC000000));
绑定Adapter
//添加想要展示的数据
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
List lstYear = new ArrayList<>();
for(int i = 2015; i <= year; i++){
    lstYear.add(i);
}
ArrayAdapter adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_dropdown_item, lstYear);
setAdapter(adapter);
Activity监听
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进行展示

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 lstYear = new ArrayList<>();
        for(int i = 2015; i <= year; i++){
            lstYear.add(i);
        }
        Collections.sort(lstYear);
        Collections.reverse(lstYear);
        ArrayAdapter adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_dropdown_item, lstYear);
        setAdapter(adapter);
    }
}

Activity

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();
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/583345.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号