当我开发一个 Android 应用程序时,我想在较低的 android 版本中使用更高 API 的方法?下面是ListView的一个方法
public void smoothScrollToPosition(int position) Since API Level 8,
但是我想在较低的android版本中使用这种方法,例如,API 5怎么做????谢谢你
当我开发一个 Android 应用程序时,我想在较低的 android 版本中使用更高 API 的方法?下面是ListView的一个方法
public void smoothScrollToPosition(int position) Since API Level 8,
但是我想在较低的android版本中使用这种方法,例如,API 5怎么做????谢谢你
基本上你做不到。但是,您可以在更高版本中使用它,并在代码中为旧版本提供一些向后兼容性:
@TargetApi(Build.VERSION_CODES.FROYO)
private void allowSmoothScrollIfSupported() {
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO ) {
list.smoothScrollToPosition(position)
} else {
list.scrollToPosition(position)
}
}
此方法只会在 API 版本 8 及更高版本上执行,并且不会在以下崩溃:它将回退到旧 API ( scrollToPosition
)。
并且在您的中AndroidManifest.xml
,您可以指出您的目标是最新的 api,但从 5 开始支持所有这些:
<uses-sdk
android:minSdkVersion="5"
android:targetSdkVersion="17" />
除了@snicolas 的解决方案,您可以使用反射:
try {
Method smoothScrollToPositionMethod = ListView.class.getMethod("smoothScrollToPosition", int.class);
smoothScrollToPositionMethod.invoke(list, position);
} catch (NoSuchMethodException e) {
list.scrollToPosition(position)
}