Android 尝试使用基于2.1 SDK的ICS风格的NumberPicker?
我正在开发一个基于Android 2.1的应用程序,在我的应用程序的一个页面上,需要一个numberpicker。我们知道android 2.1不包含numberpicker控件,所以我写了一个 我需要在Android 2.1上显示我的numberpicker版本,但是Android 4.0中ICS风格的numberpicker,为了实现这一目标,我使用了反射,当我的代码中检测到当前Build.version.SDK_INT>=14时,我反射目标平台的numberpicker,并将其动态添加到当前视图中 我的问题是,当我在安卓4.0平台上运行我的应用程序时,我可以反映numberpicker,但numberpicker风格似乎不是ICS风格,为什么Android 尝试使用基于2.1 SDK的ICS风格的NumberPicker?,android,android-widget,Android,Android Widget,我正在开发一个基于Android 2.1的应用程序,在我的应用程序的一个页面上,需要一个numberpicker。我们知道android 2.1不包含numberpicker控件,所以我写了一个 我需要在Android 2.1上显示我的numberpicker版本,但是Android 4.0中ICS风格的numberpicker,为了实现这一目标,我使用了反射,当我的代码中检测到当前Build.version.SDK_INT>=14时,我反射目标平台的numberpicker,并将其动态添加到当
提前谢谢 如果你有耐心的话,你可能会回到港口。除此之外,为什么要使用反射?如果您将目标API设置为15,这就是您所需要的。在您的
布局
文件夹中,声明您的可选号码选择器。在layout-v11
(NumberPicker
在API 11或更高版本中提供)声明android.widget.NumberPicker
。为每个人提供相同的ID,并在活动中使用以下内容:
private NumberPicker mNumPicker;
private SomeView mOldNumPicker;
public void onCreate(...) {
// Use NumberPicker
if (android.os.Build.VERSION.SDK_INT >= 11) {
mNumPicker = findViewById(R.id.numpicker);
} else {
mOldNumPicker = findViewById(R.id.numpicker);
}
}
这是因为您不需要反射,也不会因为访问不存在的API而遇到任何崩溃。从这里开始,您只需检查if(mNumPicker==null)
和if(mOldNumPicker==null)
,并确定基于此调用哪些方法。还有一个例子是一个