}
if (calendar.get(Calendar.MONTH) != month) {
calendar.set(Calendar.MONTH, month);
}
if (calendar.get(Calendar.YEAR) != year) {
calendar.set(Calendar.YEAR, year);
}
}
updateRightValue(calendar.getTimeInMillis());
mTimeMillis = calendar.getTimeInMillis();
}
/**
* 向外部发送当前选中时间
*/
if (mOnSelectedChangeListener != null) {
mOnSelectedChangeListener.onSelected(this,mTimeMillis);
}
Log.e(TAG, "selected time:" + test.format(mTimeMillis));
}
选择数值和字符串
同样的,使用NumberPicker进行封装,动态填充数值从而实现滚动变换的效果。
考虑到通用性,传入的是Object类型的数组,在控件里进行判断。
可以选择一列数值、两列数值、三列数值,字符串同理。每一列数值可以设置它的单位、标题等,默认是隐藏,需要自己设
置。
可以设置步长step
完整代码如下:
package com.example.moore.picktimeview.widget;
import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.NumberPicker;
import android.widget.TextView;
/**
* Created by Moore on 2016/10/21.
*/
public class PickValueView extends LinearLayout implements NumberPicker.OnValueChangeListener {
private Context mContext;
/**
* 组件 标题、单位、滚轮
*/
private TextView mTitleLeft, mTitleMiddle, mTitleRight;
private TextView mUnitLeft, mUnitMiddle, mUnitRight;
private MyNumberPicker mNpLeft, mNpMiddle, mNpRight;
/**
* 数据个数 1列 or 2列 or 3列
*/
private int mViewCount = 1;
/**
* 一组数据长度
*/
private final int DATA_SIZE = 3;
/**
* 需要设置的值与默认值
*/
private Object[] mLeftValues;
private Object[] mMiddleValues;