Android彈窗ListPopupWindow的簡(jiǎn)單應(yīng)用詳解
概述
常用的彈窗有菜單,或者Dialog,但更加人性化和可自定義的還是PopupWindow
如果只是展示列表數(shù)據(jù)或者彈窗列表選擇,直接使用ListPopupWindow即可,不用再單獨(dú)去設(shè)置布局。
如果想要更加多樣化的那就自定義一個(gè)布局,使用PopupWindow即可,也不復(fù)雜。
用法
自定義ListPopupWindow類
public class ChargeItemSumPop extends ListPopupWindow { public ChargeItemSumPop(Context context) { super(context); } }
屬性設(shè)置
因?yàn)槔锩嬉呀?jīng)有一個(gè)列表控件了,所以,不用再綁定布局
setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); setWidth(600); setModal(true); setBackgroundDrawable(new ColorDrawable(0xCC000000));
綁定Adapter
//添加想要展示的數(shù)據(jù) 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監(jiān)聽(tīng)
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();
完整彈窗類
與普通的彈窗不一樣的地方在于這里面是一個(gè)列表,所以要綁定Adapter進(jìn)行展示
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
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(); //重載數(shù)據(jù)等的操作 //mPresenter.getCharges(getChargeDate()); }); pop.setAnchorView(bindingView.chargeYear); pop.show(); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android實(shí)現(xiàn)環(huán)信修改頭像和昵稱
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)環(huán)信修改頭像和昵稱,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02在Visual Studio上構(gòu)建C++的GUI框架wxWidgets的開(kāi)發(fā)環(huán)境
這篇文章主要介紹了Visual Studio上構(gòu)件C++的GUI框架wxWidgets開(kāi)發(fā)環(huán)境的方法,wxWidgets是一個(gè)跨多個(gè)系統(tǒng)平臺(tái)的圖形化界面開(kāi)發(fā)框架,并且可用語(yǔ)言不限于C++,需要的朋友可以參考下2016-04-04Retrofit自定義請(qǐng)求參數(shù)注解的實(shí)現(xiàn)思路
這篇文章主要給大家介紹了Retrofit自定義請(qǐng)求參數(shù)注解的實(shí)現(xiàn)思路,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12Android 上下滾動(dòng)TextSwitcher實(shí)例詳解
這篇文章主要介紹了Android 上下滾動(dòng)TextSwitcher實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06Android開(kāi)發(fā)中include控件用法分析
這篇文章主要介紹了Android開(kāi)發(fā)中include控件用法,結(jié)合實(shí)例形式分析了Android界面布局中include控件的使用技巧,需要的朋友可以參考下2016-10-10android private libraries 中的包源代碼添加方法
這篇文章主要介紹了android private libraries 中的包源代碼添加方法,方法很簡(jiǎn)單,看完本文即可學(xué)會(huì),需要的朋友可以參考下2015-05-05android和服務(wù)器的URLEncodedUtils亂碼編碼問(wèn)題的解決方案
今天小編就為大家分享一篇關(guān)于android和服務(wù)器的URLEncodedUtils亂碼編碼問(wèn)題的解決方案,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03Android自定義View實(shí)現(xiàn)簡(jiǎn)單的圓形Progress效果
這篇文章主要介紹了Android自定義View實(shí)現(xiàn)簡(jiǎn)單的圓形Progress效果的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09