滚动中文选择控件

博客分享了如何将Android 4.0的日期控件改造成中文选择控件的过程,提供了一个简洁美观的解决方案,适用于需要中文滚动选择的场景。源码可在优快云下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时候要用到中文的滚动选择,但网上都是wheelview控件写的,比较繁琐,自己把Android 4.0风格的日期控件改写成中文选择控件,界面比较简洁美观,喜欢的朋友可以下载看看。地址:http://download.youkuaiyun.com/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);
        }
    }
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值