我希望能够创建一个允许用户从指定范围中选择一个数字的Dialog.
我知道现有的小部件(比如来自quietlycoding的那些小部件和SimonVT的小部件)已经做到了,但是我很难将这些小部件正确地集成到我的应用程序中.此外,这些主要是小部件.我想要的东西与android开发者页面教程中的东西非常相似.
我还检查了NumberPicker的文档,它说要检查TimePicker和DatePicker的示例,但它们只显示如何使用时间和日期选择器,我很难感觉到我的方式绕过代码并尝试转换时间选择器只是一个正常的数字选择器.有谁知道从哪里开始?我一直在寻找最近3个小时的解决方案无济于事.
有没有办法从XML布局设置NumberPicker的最小值,最大值和默认值?
我是在Activity代码中做的:
np = (NumberPicker) findViewById(R.id.np);
np.setMaxValue(120);
np.setMinValue(0);
np.setValue(30);
Run Code Online (Sandbox Code Playgroud)
XML显然更合适,因为它定义了属性,而不是行为.
有没有办法使用XML布局设置这些?
android.widget.NumberPicker在我的Android App视图中使用一对,当我按住其中一个数字箭头时,我收到以下消息: -
FATAL EXCEPTION: main
java.lang.NullPointerException at android.widget.NumberPicker$ChangeCurrentByOneFromLongPressCommand.run(NumberPicker.java:2245)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5419)
Run Code Online (Sandbox Code Playgroud)
任何人对如何解决这个问题都有任何想法?
更新:从目前为止的评论看来,这个例外似乎只发生在Android 4.3的三星设备上.
我已经查看了大部分线程,并且没有提供可行的答案.样式化NumberPicker不起作用(根据此线程:NumberPicker textColour)
将numberPicker上的style属性设置为具有颜色项的样式也没有任何效果.在numberPicker XML上设置textColor属性也不做任何事情.
我最接近的是使用numberPicker将其getChildAt()转换为EditText,然后对该EditText执行setColor(),但这只会在初始化时更改子颜色,然后每次从中选择在其上; 不是我要找的东西.
有帮助吗?谢谢
在最近的Android版本中,数字选择器在绘制时使用蓝色分隔符(参见下图).

我想改变这种颜色.有工作的解决方案吗?或者是一个包含更新版本的NumberPicker的库,它允许自定义分隔符颜色?
我尝试过android-numberpicker,但是由于库中的一些代码试图访问不存在的资源ID,我在运行时遇到错误(见下文).
android.content.res.Resources$NotFoundException: Resource ID #0x0
at android.content.res.Resources.getValue(Resources.java:1123)
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2309)
at android.content.res.Resources.getLayout(Resources.java:939)
at android.view.LayoutInflater.inflate(LayoutInflater.java:395)
at net.simonvt.numberpicker.NumberPicker.<init>(NumberPicker.java:635)
at net.simonvt.numberpicker.NumberPicker.<init>(NumberPicker.java:560)
at net.simonvt.numberpicker.NumberPicker.<init>(NumberPicker.java:550)
Run Code Online (Sandbox Code Playgroud) 我有一个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) 我已经看到了许多定制的解决方案和这个问题的答案.我需要一些非常简单的东西,我有一个偏好活动,我需要的是其中一个选项将打开带有数字选择器的对话框并保存结果.能否请您一步一步指导我如何完成这项工作?
public class SettingsActivity extends PreferenceActivity
{
@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
//requestWindowFeature(Window.FEATURE_NO_TITLE);
}
public static class MyPreferenceFragment extends PreferenceFragment
{
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
}
}
}
Run Code Online (Sandbox Code Playgroud)
XML:
<SwitchPreference
android:key="cross"
android:summaryOff="Cross is invisible"
android:summaryOn="Cross is visible"
android:switchTextOff="OFF"
android:switchTextOn="ON"
android:title="Cross"
android:defaultValue="true"/>
<SwitchPreference
android:key="autoP"
android:summaryOff="App will go to sleep"
android:summaryOn="App will not go to sleep"
android:switchTextOff="OFF"
android:switchTextOn="ON"
android:title="Always On"
android:defaultValue="true"/>
<SwitchPreference
android:key="tempD"
android:summaryOff="Temprature not displayed"
android:summaryOn="Temprature displayed"
android:switchTextOff="OFF"
android:switchTextOn="ON"
android:title="Tempature …Run Code Online (Sandbox Code Playgroud) 是否有任何属性告诉(标准)NumberPicker在其最后一个值之后停止?例如,如果我的MinValue为0且我的MaxValue为5,则NumberPicker仅在5之后重复,以便用户可以无限滚动.
我想使用数字选择器来获取用户的折扣百分比.一旦用户输入销售价格,我想要一个对话框来询问折扣百分比.我找不到在对话框中集成numberpicker的方法.
我想创建一个计时器,因为我无法创建一个可编辑的数字界面,用户可以设置我想要使用NumberPicker的时间.但是,NumberPicker仅显示0-9之间的数字的1位数.如何格式化选择器,使其显示两个数字,如01 02 03等.