2

当我开发一个 Android 应用程序时,我想在较低的 android 版本中使用更高 API 的方法?下面是ListView的一个方法

public void smoothScrollToPosition(int position)  Since API Level 8,

但是我想在较低的android版本中使用这种方法,例如,API 5怎么做????谢谢你

4

2 回答 2

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" />
于 2013-01-07T06:58:00.067 回答
0

除了@snicolas 的解决方案,您可以使用反射:

    try {       
        Method smoothScrollToPositionMethod = ListView.class.getMethod("smoothScrollToPosition", int.class);
        smoothScrollToPositionMethod.invoke(list, position);
    } catch (NoSuchMethodException e) {
         list.scrollToPosition(position)
    }
于 2013-01-07T08:29:56.187 回答