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