package com.yyquan.jzh.view.DataPickerView; import java.util.ArrayList; import android.app.Activity; import android.content.Context; import android.graphics.drawable.BitmapDrawable; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.PopupWindow; import com.yyquan.jzh.R; /** * 选项选择器,可支持一二三级联动选择 * @author Sai * */ public class OptionsPopupWindow extends PopupWindow implements OnClickListener { private View rootView; // 总的布局 WheelOptions wheelOptions; private View btnSubmit, btnCancel; private OnOptionsSelectListener optionsSelectListener; private static final String TAG_SUBMIT = "submit"; private static final String TAG_CANCEL = "cancel"; public OptionsPopupWindow(Context context) { super(context); this.setWidth(LayoutParams.FILL_PARENT); this.setHeight(LayoutParams.WRAP_CONTENT); this.setBackgroundDrawable(new BitmapDrawable());// 这样设置才能点击屏幕外dismiss窗口 this.setOutsideTouchable(true); this.setAnimationStyle(R.style.timepopwindow_anim_style); LayoutInflater mLayoutInflater = LayoutInflater.from(context); rootView = mLayoutInflater.inflate(R.layout.pw_options, null); // -----确定和取消按钮 btnSubmit = rootView.findViewById(R.id.btnSubmit); btnSubmit.setTag(TAG_SUBMIT); btnCancel = rootView.findViewById(R.id.btnCancel); btnCancel.setTag(TAG_CANCEL); btnSubmit.setOnClickListener(this); btnCancel.setOnClickListener(this); // ----转轮 final View optionspicker = rootView.findViewById(R.id.optionspicker); ScreenInfo screenInfo = new ScreenInfo((Activity) context); wheelOptions = new WheelOptions(optionspicker); wheelOptions.screenheight = screenInfo.getHeight(); setContentView(rootView); } public void setPicker(ArrayList<String> optionsItems) { wheelOptions.setPicker(optionsItems, null, null, false); } public void setPicker(ArrayList<String> options1Items, ArrayList<ArrayList<String>> options2Items, boolean linkage) { wheelOptions.setPicker(options1Items, options2Items, null, linkage); } public void setPicker(ArrayList<String> options1Items, ArrayList<ArrayList<String>> options2Items, ArrayList<ArrayList<ArrayList<String>>> options3Items, boolean linkage) { wheelOptions.setPicker(options1Items, options2Items, options3Items, linkage); } /** * 设置选中的item位置 * @param option1 */ public void setSelectOptions(int option1){ wheelOptions.setCurrentItems(option1, 0, 0); } /** * 设置选中的item位置 * @param option1 * @param option2 */ public void setSelectOptions(int option1, int option2){ wheelOptions.setCurrentItems(option1, option2, 0); } /** * 设置选中的item位置 * @param option1 * @param option2 * @param option3 */ public void setSelectOptions(int option1, int option2, int option3){ wheelOptions.setCurrentItems(option1, option2, option3); } /** * 设置选项的单位 * @param label1 * @param */ public void setLabels(String label1){ wheelOptions.setLabels(label1, null, null); } /** * 设置选项的单位 * @param label1 * @param label2 */ public void setLabels(String label1,String label2){ wheelOptions.setLabels(label1, label2, null); } /** * 设置选项的单位 * @param label1 * @param label2 * @param label3 */ public void setLabels(String label1,String label2,String label3){ wheelOptions.setLabels(label1, label2, label3); } /** * 设置是否循环滚动 * @param cyclic */ public void setCyclic(boolean cyclic){ wheelOptions.setCyclic(cyclic); } @Override public void onClick(View v) { String tag=(String) v.getTag(); if(tag.equals(TAG_CANCEL)) { dismiss(); return; } else { if(optionsSelectListener!=null) { int[] optionsCurrentItems=wheelOptions.getCurrentItems(); optionsSelectListener.onOptionsSelect(optionsCurrentItems[0], optionsCurrentItems[1], optionsCurrentItems[2]); } dismiss(); return; } } public interface OnOptionsSelectListener { public void onOptionsSelect(int options1, int option2, int options3); } public void setOnoptionsSelectListener( OnOptionsSelectListener optionsSelectListener) { this.optionsSelectListener = optionsSelectListener; } }