上一節(jié)的PopupWindow基本能用
更通用一點(diǎn)的看下面,不過一行顯示多少個(gè)小球需要gridView.setNumColumns(8)設(shè)定一下,這里我沒抽成動(dòng)態(tài)的,具體看源碼:
用法:
更通用一點(diǎn)的看下面,不過一行顯示多少個(gè)小球需要gridView.setNumColumns(8)設(shè)定一下,這里我沒抽成動(dòng)態(tài)的,具體看源碼:
package com.dl.view; import android.content.Context; import android.graphics.drawable.BitmapDrawable; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.LinearLayout.LayoutParams; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.GridView; import android.widget.PopupWindow; import android.widget.TextView; import com.dl.app.R; public class NumbersPickerPopupWindow extends PopupWindow{ private Context context; private String[] balls; private final String split=" "; private Button btn_ok; private String selectedNumbers; private String[] selectedNumbersArray; private GridViewAdapter adapter; /** * * @param context * @param view * @param title 標(biāo)題 * @param balls 生成的小球 * @param selectedNumbers 預(yù)選的小球 */ public NumbersPickerPopupWindow(Context context,View view,String title,String[] balls,String selectedNumbers){ super(view, LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT, true); this.context=context; this.selectedNumbers=selectedNumbers; this.balls=balls; selectedNumbersArray=selectedNumbers.trim().split(split); this.setBackgroundDrawable(new BitmapDrawable());//必須設(shè)置background才能消失 this.setOutsideTouchable(false); //自定義動(dòng)畫 this.setAnimationStyle(R.style.PopupAnimation); //使用系統(tǒng)動(dòng)畫 // mPopupWindow.setAnimationStyle(android.R.style.Animation_Dialog); this.update(); this.setTouchable(true); this.setFocusable(false); GridView gridView=(GridView)view.findViewById(R.id.gridView); // gridView.setNumColumns(8); adapter=new GridViewAdapter(context); gridView.setAdapter(adapter); TextView tv_tips=(TextView)view.findViewById(R.id.tv_tips); tv_tips.setText(title); btn_ok=(Button)view.findViewById(R.id.btn_ok); btn_ok.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub if(isShowing()) dismiss(); // if(onOkClickListener!=null){ // onOkClickListener.onOkClick(v); // } } }); this.setOnDismissListener(onDismissListener); } private OnDismissListener onDismissListener=new OnDismissListener(){ public void onDismiss() { // TODO Auto-generated method stub if(onOkClickListener!=null){ onOkClickListener.onOkClick(btn_ok); } } }; public void setSelectedNumbers(String selectedNumbers){ this.selectedNumbers=selectedNumbers; selectedNumbersArray=selectedNumbers.trim().split(split); adapter.notifyDataSetChanged(); } class GridViewAdapter extends BaseAdapter{ private Context context; public GridViewAdapter(Context context){ this.context=context; } public int getCount() { // TODO Auto-generated method stub return balls.length; } public Object getItem(int position) { // TODO Auto-generated method stub return balls[position]; } public long getItemId(int position) { // TODO Auto-generated method stub return position; } public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub if(convertView==null){ convertView=LayoutInflater.from(context).inflate(R.layout.simple_grid_item_1_red, null); } CheckBox checkBox = (CheckBox)convertView.findViewById(R.id.checkBox);// checkBox.setText(balls[position]); if(selectedNumbersArray!=null&&selectedNumbersArray.length>0){ for(int i=0;i<selectedNumbersArray.length;i++){ if(selectedNumbersArray[i].equals(balls[position])){ checkBox.setChecked(true); } } } checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(onItemCheckedListener!=null){ onItemCheckedListener.onItemCheckedChanged(buttonView,isChecked); } } }); return convertView; } } //接口 private OnItemCheckedListener onItemCheckedListener; public void setOnItemCheckedListener(OnItemCheckedListener onItemCheckedListener) { this.onItemCheckedListener = onItemCheckedListener; } public interface OnItemCheckedListener{ public void onItemCheckedChanged(CompoundButton buttonView, boolean isChecked); } private OnOkClickListener onOkClickListener; public void setOnOkClickListener(OnOkClickListener onOkClickListener) { this.onOkClickListener = onOkClickListener; } public interface OnOkClickListener{ public void onOkClick(View v); } }
用法:
LayoutInflater mLayoutInflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); View view = mLayoutInflater.inflate(R.layout.popwindow2, null); tips="至少選擇1個(gè)數(shù)字"; balls=new String[]{"1","2","3","4","5","6","7","8","9","10", "11","12","13","14","15","16","17","18","19","20", "21","22","23","24","25","26" }; selectedNumbers="4 7 24";//空格隔開! picker=new NumbersPickerPopupWindow(context,view,tips,balls,selectedNumbers); picker.setOnItemCheckedListener(onItemCheckedListener); picker.setOnOkClickListener(onOkClickListener); if(!picker.isShowing()){ picker.showAtLocation(views[index], Gravity.BOTTOM, 0, 0); }

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
