1

我正在编写一个从 Android 库扩展 LinearLayout 的类。在类构造函数中,我使用了仅在 SDK 11 中引入的 LinearyLayout 构造函数 LinearLayout(Context context,AttributeSet attrs, int defStyles)。问题是我试图让应用程序在运行 SDK 10 的 Android 2.3.3 上运行。我有尝试引入类似于此的检查:

public SView(Context context, AttributeSet attrs, int defStyle) {
    if (android.os.Build.VERSION.SDK_INT <= 10) {
        super(context, attrs, defStyle);
    } else {
        super(context, attrs, defStyle);
    }
    setupView(context);
}

但是问题仍然存在,因为super必须在第一行。另一个问题是 defStyle 提供的功能没有被替代。

我应该怎么做才能解决这个问题?

4

1 回答 1

0

一种解决方案是使用两个单独的 XML 文件。一个使用SView,另一个使用“2.3.3 友好”的替代方案。

您将在设置活动或片段的布局之前进行检查。像这样:

   int layoutId = R.layout.fancy_stuff;
   if (android.os.Build.VERSION.SDK_INT <= 10) {
        layoutId = R.layout.boring_stuff;
   }
   setContentView(layoutId);

fancy_stuff将引用您的SView,boring_stuff并将引用您的 SDK 10 的东西。

于 2013-06-11T05:26:59.017 回答