安卓numberpicker浮点数(android numberpicker for floatin

2019-08-03 08:34发布

我们的应用程序的用户应该能够调整一个浮点数。 此刻,我充满了ArrayAdapter与所有可能的值,并将其连接到一个微调。

该解决方案并不能真正满足我们的期望,因为微调下拉框的方式过于高大。 有没有更好的办法? 我一直在寻找Numberpicker - 但这似乎只是一个整数工作。

有任何想法吗?

谢谢!

Answer 1:

NumberPicker不仅是整数。即使你可以用Floats String等。

看到这个和了解它。

对于教程:

  • http://gafurbabu.wordpress.com/2012/03/29/android-number-picker-dialog/

我曾用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); 

你可以让ArrayList任何数据类型,并分配它。



Answer 2:

另一种解决方案是在两个numberfields组合成一个组件。 见钱选取器实例 。 它的好处是,你不必初始化所有可能的双值的微调。

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

  1. 加入双机械手XML布局:

     <LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:gravity = "center"> <NumberPicker android:id = "@+id/integer_picker" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_gravity = "center"/> <TextView android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_gravity = "center" android:padding = "5dp" android:text = "@string/local_separator" android:textSize = "20sp"/> <NumberPicker android:id = "@+id/fraction_picker" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_gravity = "center"/> <TextView android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_gravity = "center" android:padding = "5dp" android:text = "@string/measure_unit_sign" android:textSize = "20sp"/> </LinearLayout> 
  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使用新的双重选择器组件:

     <com.example.DoublePicker android:id ="@+id/double_picker" android:layout_width ="match_parent" android:layout_height ="wrap_content" /> 


文章来源: android numberpicker for floating point numbers