我有一个NumberPicker,它有一个格式化程序,可以在NumberPicker旋转或手动输入值时格式化显示的数字.这工作正常,但是当第一次显示NumberPicker并且我用setValue(0)0 初始化它时没有被格式化(它应该显示为" - "而不是0).一旦我从那一点旋转NumberPicker一切正常.
如何强制NumberPicker始终格式化 - 在第一次渲染时以及在使用键盘手动输入数字时?
这是我的格式化程序
public class PickerFormatter implements Formatter {
private String mSingle;
private String mMultiple;
public PickerFormatter(String single, String multiple) {
mSingle = single;
mMultiple = multiple;
}
@Override
public String format(int num) {
if (num == 0) {
return "-";
}
if (num == 1) {
return num + " " + mSingle;
}
return num + " " + mMultiple;
}
}
Run Code Online (Sandbox Code Playgroud)
我将格式化程序添加到选择器中setFormatter(),这是我对拾取器所做的全部操作.
picker.setMaxValue(max);
picker.setMinValue(min);
picker.setFormatter(new PickerFormatter(single, multiple));
picker.setWrapSelectorWheel(wrap);
Run Code Online (Sandbox Code Playgroud) 我们的应用程序的用户应该能够调整浮点数.目前,我在ArrayAdapter中填充了所有可能的值并将其附加到微调器上.
这个解决方案并不能满足我们的期望,因为旋转器下拉框太高了.有没有更好的办法?我在看Numberpicker - 但这似乎只适用于Integer值.
有任何想法吗?
谢谢!
我正在尝试在 Android 中创建一个数字选择器,但轮子只增加 1。我想增加 0.1。我在网上查过,但我发现一个格式化的浮动数组禁用了轮子。请帮助和抱歉语法,我正在学习。
我正在尝试https://github.com/SimonVT/android-numberpicker库,参考文献是https://developer.android.com/reference/android/widget/NumberPicker.html#getValue%28%29 现在两者都是, API级别11 NumberPicker在getValue方法中返回int值,并且SimonVT numberpicker也返回int值.
但是我使用以下代码在数字选择器中设置了双值:
String[] nums = {"1","1.5","2","2.5","3","3.5","4","4.5","5","5.5","6","6.5","7","7.5","8","8.5","9"};
final NumberPicker listeningScorenp = (NumberPicker) findViewById(R.id.listeningScore);
listeningScorenp.setMaxValue(nums.length-1);
listeningScorenp.setMinValue(0);
listeningScorenp.setWrapSelectorWheel(false);
listeningScorenp.setDisplayedValues(nums);
Run Code Online (Sandbox Code Playgroud)
现在我不知道如何从NUmberPicker中检索float/double值.