use*_*016 9 android android-widget
是否可以以比在OnScrollListener事件中处理它更方便的方式执行此操作?可惜它没有步长属性......
小智 28
Android中的NumberPicker有一个名为setDisplayedValues的方法.您可以使用此一个来显示自定义值(它需要一个字符串数组),然后在需要值时映射它们.因此,例如,如果您需要在分钟选择器中使用5步,则可以创建如下数组:
String[] minuteValues = new String[12];
for (int i = 0; i < minuteValues.length; i++) {
String number = Integer.toString(i*5);
minuteValues[i] = number.length() < 2 ? "0" + number : number;
}
minutePicker.setDisplayedValues(minuteValues);
Run Code Online (Sandbox Code Playgroud)
然后当你得到它的值时OnValueChangeListener,你只需要将它强制转换为整数:
Integer.parseInt(minuteValues[newVal]);
Run Code Online (Sandbox Code Playgroud)
eas*_*ese 12
例如,要设置步数"5",请使用NumberPicker.Formatter:
NumberPicker.Formatter formatter = new NumberPicker.Formatter() {
@Override
public String format(int value) {
int temp = value * 5;
return "" + temp;
}
};
numberPicker.setFormatter(formatter);
Run Code Online (Sandbox Code Playgroud)
为什么不直接添加一个OnValueChangeListener:
numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
picker.setValue((newVal < oldVal)?oldVal-5:oldVal+5);
}
});
Run Code Online (Sandbox Code Playgroud)
Android中的NumberPicker有一个名为setDisplayedValues的方法.您可以使用此一个来显示自定义值(它需要一个字符串数组),然后在需要值时映射它们.
例如,您可以创建如下函数:
public String[] getArrayWithSteps (int iMinValue, int iMaxValue, int iStep)
{
int iStepsArray = (iMaxValue-iMinValue) / iStep+1; //get the lenght array that will return
String[] arrayValues= new String[iStepsArray]; //Create array with length of iStepsArray
for(int i = 0; i < iStepsArray; i++)
{
arrayValues[i] = String.valueOf(iMinValue + (i * iStep));
}
return arrayValues;
}
Run Code Online (Sandbox Code Playgroud)
因此,您应该调用方法> NumberPicker.setDisplayedValues,例如:
int min = 5;
int max = 180;
int step = 10;
String[] myValues = getArrayWithSteps(min, max, step); //get the values with steps... Normally
//Setting the NumberPick (myNumberPick)
myNumberPick.setMinValue(0);
myNumberPick.setMaxValue((max-step) / min + 1); //Like iStepsArray in the function
//Because the Min and Max Value should be the range that will show.
//For example, Min = 0 and Max = 2, so the NumberPick will display the first three strings in the array String (myValues);
myNumberPick.setDisplayedValues(myValues);//put on NumberPicker
Run Code Online (Sandbox Code Playgroud)
要获取NumberPick中的值:
String sValue = String.valueOf(10+(myNumberPick.getValue()*5)); //->> (iMinValue + (myNumberPick.getValue()*iStep))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17296 次 |
| 最近记录: |