使用setWrapSelectorWheel(boolean wrapSelectorWheel)
设置是否循环滚动。而且必须在setMaxValue()
和setMinValue()
的后面调用setWrapSelectorWheel()
才管用。
官方文档说明如下:
接下来我们看一下源代码。
在setMaxValue()
和setMinValue()
中调用了setWrapSelectorWheel()
。判断(mMaxValue - mMinValue)
是否大于3(SELECTOR_WHEEL_ITEM_COUNT),如果大于3,则循环滚动。
private static final int SELECTOR_WHEEL_ITEM_COUNT = 3;
private final int[] mSelectorIndices = new int[SELECTOR_WHEEL_ITEM_COUNT];
/**
* Sets the max value of the picker.
*
* @param maxValue The max value inclusive.
*
* <strong>Note:</strong> The length of the displayed values array
* set via {@link #setDisplayedValues(String[])} must be equal to the
* range of selectable numbers which is equal to
* {@link #getMaxValue()} - {@link #getMinValue()} + 1.
*/
public void setMaxValue(int maxValue) {
if (mMaxValue == maxValue) {
return;
}
......
boolean wrapSelectorWheel = mMaxValue - mMinValue > mSelectorIndices.length;
setWrapSelectorWheel(wrapSelectorWheel);
......
invalidate();
}
/**
* Sets the min value of the picker.
*
* @param minValue The min value inclusive.
*
* <strong>Note:</strong> The length of the displayed values array
* set via {@link #setDisplayedValues(String[])} must be equal to the
* range of selectable numbers which is equal to
* {@link #getMaxValue()} - {@link #getMinValue()} + 1.
*/
public void setMinValue(int minValue) {
if (mMinValue == minValue) {
return;
}
......
boolean wrapSelectorWheel = mMaxValue - mMinValue > mSelectorIndices.length;
setWrapSelectorWheel(wrapSelectorWheel);
......
invalidate();
}