2016-10-08 12 views
4

之间的差异。什么是我知道<code>LinearLayoutCompat</code>实现了给我们一些新的方法至极是在一个较高水平的android加入到较低水平的android的LinearLayout和LinearLayoutCompat

我的问题是这样的方法:

linearLayout.setPaddingRelative 

这是在API 17添加,但我们应该使用下面的代码右侧有它较低的API中?

linearLayoutCompat.setPaddingRelative 

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

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

那么什么是LinearLayoutLinearLayoutCompat之间的区别?

回答

6

LinearLayoutCompat已添加到支持它是在对旧的(如分配器)新的API级别增加的方法。如果您比较LinearLayoutLinearLayoutCompat中的方法,则可以看到Compat布局具有LinearLayout的所有方法,而没有任何API级别的限制。
这让我们回到你的问题:您正在尝试使用它是View类(从ViewLinearLayout继承)的一部分的方法。 View类的支持方法取决于不同的API级别,这就是为什么在API级别17之前无法使用此方法的原因,也不能使用LinearLayout和LinearLayoutCompat。

如果您想使用此方法,则无论您使用的是哪种API级别,都可以使用ViewCompat级别并致电ViewCompat.setPaddingRelative(View view, ...)

+0

好的感谢您的关注,但为什么他们将ViewGroup用于LinearLayoutCompat的父级,而不是ViewGroupCompat? – max

+0

我不能告诉你对不起。但通过查看文档ViewGroupCompat不会继承View它更像ViewCompat一个带有一些静态方法的辅助类。 – reVerse