LinearLayout 和 LinearLayoutCompat 有什么区别

What's the difference between LinearLayout and LinearLayoutCompat

我知道 LinearLayoutCompat 的实现是为了给我们一些更新的方法,这些方法被添加到 android 的较高级别到 Android 的较低级别。

我的问题是这个方法:

 linearLayout.setPaddingRelative

它是在 API 17 中添加的,但我们应该使用以下代码将其放在较低的 API 中,对吗?

 linearLayoutCompat.setPaddingRelative

但是我的 Android Studio 仍然显示以下错误。

Call requires API level 17 (current min is 15): android.view.View#setPaddingRelativ

那么LinearLayoutLinearLayoutCompat有什么区别呢?

添加了

LinearLayoutCompat 以支持在较新的 API 级别中添加到旧级别(如分隔线)的方法。如果您比较 LinearLayout and LinearLayoutCompat 中的方法,您会发现 Compat 布局具有 LinearLayout 的所有方法,没有任何 API 级别限制。
这让我们回到您的问题:您正在尝试使用属于 View class 的方法(LinearLayout 继承自 View class) .视图 class 支持的方法取决于不同的 API 级别,这就是为什么您不能在 API 级别 17 之前使用此方法,无论是 LinearLayout 还是 LinearLayoutCompat。

如果您想使用此方法,无论您处于 API 哪个级别,您都可以使用 ViewCompat class 并调用 ViewCompat.setPaddingRelative(View view, ...).