【问题标题】:What's the difference between LinearLayout and LinearLayoutCompatLinearLayout 和 LinearLayoutCompat 有什么区别
【发布时间】:2016-10-08 10:46:34
【问题描述】:

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

我的问题是这个方法:

 linearLayout.setPaddingRelative

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

 linearLayoutCompat.setPaddingRelative

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

调用需要 API 级别 17(当前最低为 15):android.view.View#setPaddingRelativ

那么LinearLayoutLinearLayoutCompat有什么区别呢?

【问题讨论】:

    标签: android android-appcompat


    【解决方案1】:

    LinearLayoutCompat 被添加以支持在旧 API 级别(如分隔符)的新 API 级别中添加的方法。如果您比较LinearLayoutLinearLayoutCompat 中的方法,您可以看到 Compat 布局具有 LinearLayout 的所有方法,没有任何 API 级别限制。
    这让我们回到您的问题:您正在尝试使用属于 View 类的方法(LinearLayout 继承自 View 类)。 View 类支持的方法取决于不同的 API 级别,这就是为什么您不能在 API 级别 17 之前使用此方法,既不能使用 LinearLayout 也不能​​使用 LinearLayoutCompat。

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

    【讨论】:

    • 好的,感谢您的关注,但为什么他们使用 ViewGroup 作为 LinearLayoutCompat 的父级,而不是 ViewGroupCompat?
    • 我不能告诉你对不起。但是通过查看文档 ViewGroupCompat 不继承 View 它更像是 ViewCompat 一个带有一些静态方法的辅助类。
    • LinearLayout 继承 ViewGroup
    • @BorisVeriga 好吧,它直接从 ViewGroup 继承,但是就像所有其他组件一样,所有东西都从 View 继承。所以 LinearLayout -> ViewGroup -> View.
    猜你喜欢
    • 2018-04-09
    • 2011-06-21
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    相关资源
    最近更新 更多