有時候要用到中文的滾動選擇,但網上都是wheelview控件寫的,比較繁瑣,自己把Android 4.0風格的日期控件改寫成中文選擇控件,界面比較簡潔美觀,喜歡的朋友可以下載看看。地址:http://download.csdn.net/detail/aiyuan0204/7062417
package com.ycf.blog_06_chinesepickerdemo.Chinese;
import com.ycf.blog_06_chinesepickerdemo.R;
import android.content.Context;
import android.widget.FrameLayout;
import android.widget.NumberPicker;
import android.widget.NumberPicker.OnValueChangeListener;
public class ChinesePicker extends FrameLayout
{
private final NumberPicker mWeekSpinner;
private final NumberPicker mBeginSpinner;
private final NumberPicker mEndSpinner;
private String mWeek,mBegin,mEnd;
private OnChooseChangedListener mOnChooseChangedListener;
private String[] week = { "週一", "週二","週三", "週四", "週五", "週六", "周天"};
private String[] begin = { "第一節", "第二節","第三節", "第四節", "第五節", "第六節", "第七節", "第八節", "第九節", "第十節"};
private String[] end = { "第一節", "第二節","第三節", "第四節", "第五節", "第六節", "第七節", "第八節", "第九節", "第十節"};
public ChinesePicker(Context context)
{
super(context);
inflate(context, R.layout.chinesedialog, this);
mWeekSpinner=(NumberPicker)this.findViewById(R.id.week);
mWeekSpinner.setMaxValue(6);
mWeekSpinner.setMinValue(0);
mWeekSpinner.setDisplayedValues(week);
mWeekSpinner.invalidate();
mWeekSpinner.setOnValueChangedListener(mOnWeekChangedListener);
mBeginSpinner=(NumberPicker)this.findViewById(R.id.begin);
mBeginSpinner.setMaxValue(9);
mBeginSpinner.setMinValue(0);
mBeginSpinner.setDisplayedValues(begin);
mBeginSpinner.invalidate();
mBeginSpinner.setOnValueChangedListener(mOnBeginChangedListener);
mEndSpinner=(NumberPicker)this.findViewById(R.id.end);
mEndSpinner.setMaxValue(9);
mEndSpinner.setMinValue(0);
mEndSpinner.setDisplayedValues(end);
mEndSpinner.invalidate();
mEndSpinner.setOnValueChangedListener(mOnEndChangedListener);
}
private NumberPicker.OnValueChangeListener mOnWeekChangedListener=new OnValueChangeListener()
{
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal)
{
setContent();
}
};
private NumberPicker.OnValueChangeListener mOnBeginChangedListener=new OnValueChangeListener()
{
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal)
{
setContent();
}
};
private NumberPicker.OnValueChangeListener mOnEndChangedListener=new OnValueChangeListener()
{
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal)
{
setContent();
}
};
public void setContent()
{
mWeek=week[mWeekSpinner.getValue()];
mBegin=begin[mBeginSpinner.getValue()];
mEnd=end[mEndSpinner.getValue()];
onChooseChanged();
}
public interface OnChooseChangedListener
{
void onChooseChanged(ChinesePicker view, String week, String begin, String end);
}
public void setOnChooseChangedListener(OnChooseChangedListener callback)
{
mOnChooseChangedListener = callback;
}
private void onChooseChanged()
{
if (mOnChooseChangedListener != null)
{
mOnChooseChangedListener.onChooseChanged(this, mWeek,mBegin, mEnd);
}
}
}
package com.ycf.blog_06_chinesepickerdemo.Chinese;
import com.ycf.blog_06_chinesepickerdemo.Chinese.ChinesePicker.OnChooseChangedListener;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
public class ChinesePickerDialog extends AlertDialog implements OnClickListener
{
private ChinesePicker mChoosePicker;
private String mWeek="週一";
private String mBegin="第一節";
private String mEnd="第一節";
private OnChooseSetListener mOnChooseSetListener;
@SuppressWarnings("deprecation")
public ChinesePickerDialog(Context context)
{
super(context);
mChoosePicker = new ChinesePicker(context);
setView(mChoosePicker);
mChoosePicker.setOnChooseChangedListener(new OnChooseChangedListener()
{
@Override
public void onChooseChanged(ChinesePicker view, String week, String begin, String end)
{
mWeek=week;
mBegin=begin;
mEnd=end;
updateTitle(mWeek,mBegin,mEnd);
}
});
setButton("設置", this);
setButton2("取消", (OnClickListener)null);
updateTitle(mWeek,mBegin,mEnd);
}
public interface OnChooseSetListener
{
void OnChooseSet(AlertDialog dialog, String week,String begin, String end);
}
private void updateTitle(String week,String begin,String end)
{
setTitle("您選擇的是:"+week+" "+begin+"到"+end);
}
public void setOnChooseSetListener(OnChooseSetListener callBack)
{
mOnChooseSetListener = callBack;
}
public void onClick(DialogInterface arg0, int arg1)
{
if (mOnChooseSetListener != null)
{
mOnChooseSetListener.OnChooseSet(this, mWeek,mBegin,mEnd);
}
}
}