LinearLayout和LinearLayoutCompat之间有什么区别

max*_*max 11 android android-appcompat

我知道我LinearLayoutCompat已经意识到给了我们一些更新的方法,它们被更高级别的android添加到更低级别的android.

我的问题是这个方法:

 linearLayout.setPaddingRelative
Run Code Online (Sandbox Code Playgroud)

这是在API 17中添加的,但我们应该通过使用以下代码将其置于较低的API中吗?

 linearLayoutCompat.setPaddingRelative
Run Code Online (Sandbox Code Playgroud)

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

 Call requires API level 17 (current min is 15): android.view.View#setPaddingRelativ
Run Code Online (Sandbox Code Playgroud)

那么LinearLayout和之间的区别是LinearLayoutCompat什么?

reV*_*rse 13

LinearLayoutCompat被添加到支持方法中,这些方法在较新的API级别(如分隔符)中添加.如果比较LinearLayoutLinearLayoutCompat中的方法,您会发现Compat布局包含LinearLayout的所有方法,没有任何API级别限制.
这让我们回到你的问题:你正在尝试使用一个方法,它是View类的一部分(LinearLayout继承自View类).View类支持的方法取决于不同的API级别,这就是为什么你不能在API级别17之前使用此方法的原因,无论是LinearLayout还是LinearLayoutCompat.

如果您想使用此方法,无论您使用的是什么API级别,都可以使用ViewCompat类并调用ViewCompat.setPaddingRelative(View view, ...).