Android Numberpicker默认值没有出现
Posted
技术标签:
【中文标题】Android Numberpicker默认值没有出现【英文标题】:Android Numberpicker default value not coming 【发布时间】:2015-02-05 06:27:25 【问题描述】:加载数字选择器时,默认值不会出现在屏幕上,直到被触摸。
一旦触摸,一切正常。任何帮助表示赞赏。
此外,如果格式化程序被删除,它也可以正常工作。
dialog.xml
<NumberPicker
android:id="@+id/number_picker"
android:layout_
android:layout_
/>
<Button
android:id="@+id/apply_button"
android:layout_
android:layout_
android:layout_below="@+id/number_picker"
android:text="@string/ok_string" />
这是活动代码:
final NumberPicker np = (NumberPicker) d.findViewById(R.id.number_picker);
np.setMaxValue(50);
np.setMinValue(0);
np.setWrapSelectorWheel(true);
np.setOnValueChangedListener(this);
np.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
np.setFormatter(new NumberPicker.Formatter()
@Override
public String format(int i)
if (i == 25)
return "0";
else
return String.valueOf(i - 25);
);
np.setValue(25);
提前致谢
【问题讨论】:
会不会是最初的文字颜色和背景颜色匹配?如果没有设备,很难想象您所看到的。 Android NumberPicker with Formatter does not format on first rendering的可能重复 【参考方案1】:@Renjith
感谢您的链接,但我认为您应该链接代码甚至将其粘贴到此处。 https://code.google.com/p/android/issues/detail?id=35482#c9
Field f = NumberPicker.class.getDeclaredField("mInputText");
f.setAccessible(true);
EditText inputText = f.get(mPicker);
inputText.setFilters(new InputFilter[0]);
【讨论】:
以下 Kotlin 版本:***.com/a/59704146/3451975【参考方案2】:这个问题似乎是 NumberPicker 小部件中的一个错误。
我已经使用here 描述的方法 2 解决了它。
【讨论】:
【参考方案3】:我在 NumberPicker 中找到了解决此错误的解决方案,该解决方案适用于 API 18-26,无需使用反射和setDisplayedValues()
here。
【讨论】:
【参考方案4】:这是用 Kotlin 写在一行中的公认答案:
// NOTE: workaround for a bug that rendered the selected value wrong until user scrolled, see also: https://***.com/q/27343772/3451975
(NumberPicker::class.java.getDeclaredField("mInputText").apply isAccessible = true .get(this) as EditText).filters = emptyArray()
请注意,我建议保留注释行以记录为什么需要此代码。
【讨论】:
【参考方案5】:我遇到了同样的问题,我使用的是 NumberPicker
和字符串。
我的问题是,在使用转换打开活动后,数字选择器中的默认值是不可见的,即使我使用 picker.setDisplayedValues(list.toStringsArray())
设置选择器值
所以对我来说,解决方案如下:
private void populatePicker(NumberPicker picker, String[] strings, int index)
picker.setDisplayedValues(null);
picker.setMinValue(0);
picker.setMaxValue(strings.length - 1);
picker.setDisplayedValues(strings);
picker.setValue(index);
try
Field field = NumberPicker.class.getDeclaredField("mInputText");
field.setAccessible(true);
EditText inputText = (EditText) field.get(picker);
inputText.setVisibility(View.INVISIBLE);
catch (Exception e)
e.printStackTrace();
【讨论】:
【参考方案6】:试试
np.setWrapSelectorWheel(false);
【讨论】:
您能否详细说明为什么这可能比公认的答案更好?以上是关于Android Numberpicker默认值没有出现的主要内容,如果未能解决你的问题,请参考以下文章
我正在尝试使用 Android NumberPicker 小部件,但我不知道如何从 NumberPicker 设置值