浮点数的android numberpicker

我们的应用程序的用户应该能够调整浮点数。 目前,我在ArrayAdapter中填充了所有可能的值并将其附加到微调器上。

这个解决方案并不能满足我们的期望,因为旋转器下拉框太高了。 有没有更好的办法? 我在看Numberpicker – 但这似乎只适用于Integer值。

有任何想法吗?

谢谢!

NumberPicker不只是用于整数..甚至你可以使用Floats String等。

看到这个并阅读它。

用于教程:

我很久以前就像这样使用了NumberPicker ,它可能会在这里发布:

  NumberPicker np; String nums[]= {"Select Fraction","1/64","1/32","3/64","1/16","5/64","3/32","7/64","1/8","9/64","5/32","11/64","3/16","13/64","7/32","15/64","1/4","17/64","9/32","19/64","5/16","21/64","11/32","23/64","3/8","25/64","13/32","27/64","7/16","29/64"}; np = (NumberPicker) findViewById(R.id.np); np.setMaxValue(nums.length-1); np.setMinValue(0); np.setWrapSelectorWheel(false); np.setDisplayedValues(nums); np.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS); 

您可以创建任何数据types的ArrayList并分配它。

另一种解决方案是将两个数字域组合成一个组件。 请参阅Money Picker示例 。 它的优点是您不必为您的微调器初始化所有可能的double值。

您可能还需要使用java.lang.String.format()函数附加特殊数字格式 ,如“00”“0123”或其他格式 。 示例在这里 。

  1. 添加双选择器xml-layout:

           
  2. 添加自定义双选择器类:

     import android.content.Context; import android.view.LayoutInflater; import android.widget.NumberPicker; /** * UI component for double (floating point) values. Can be used * for money and other measures. */ public class DoublePicker extends NumberPicker { private int decimals; private NumberPicker integerPicker; private NumberPicker fractionPicker; public DoublePicker( Context context) { super( context); LayoutInflater .from( context) .inflate( R.layout.double_picker, this); integerPicker = (NumberPicker) findViewById( R.id.integer_picker); fractionPicker = (NumberPicker) findViewById( R.id.fraction_picker); } public int getDecimals() { return decimals; } /** * Sets the amount of digits after separator. * * @param decimals Anount of decimals. */ public void setDecimals(final int decimals) { this.decimals = decimals; this.setFormatter(new DoublePicker.Formatter() { @Override public String format(int i) { return String.format( "%." + decimals + "f", i); } }); } public void setValue(double value) { integerPicker.setValue((int) value); fractionPicker.setValue( Integer.valueOf( String .valueOf(value) .split(".") [1])); } } 
  3. 在您的活动xml中使用新的双选择器组件: