当前位置:  开发笔记 > 开发工具 > 正文

Anko 0.8 - 未解决的lparams参考

如何解决《Anko0.8-未解决的lparams参考》经验,为你挑选了1个好方法。

主要问题是:lparams简单地从Anko离开,还是我做了一件非常错误的事情?以下代码段无法编译:

verticalLayout {
}.lparams(width = matchParent, height = matchParent) {
    topMargin = dip(10)
}

虽然这没有任何问题:

verticalLayout {
    layoutParams = LinearLayout.LayoutParams(matchParent, matchParent).apply {
        topMargin = dip(10)
    }
}

我不介意第二个选项太多,但是你必须在生成参数时指定布局类型,这可能会让人觉得有点烦人(并且比原始解决方案更脆).

我没有在AnkoGitHub页面,更改日志或通过浏览最近的提交找到任何内容.这是完整的UI类供参考:

class ReviewsFragmentUi(ctx: AnkoContext) : AnkoComponent {
    override fun createView(ui: AnkoContext) = ui.apply {
        verticalLayout {
            layoutParams = LinearLayout.LayoutParams(matchParent, matchParent).apply {
                topMargin = dip(10)
            }
        }
    }.view
}

相关的Gradle条目(我使用的是Kotlin 1.0.0-beta-3595):

ext.versions = [
    anko : '0.8.1',
]

compile "org.jetbrains.anko:anko-common:$versions.anko",
compile "org.jetbrains.anko:anko-sdk21:$versions.anko",
compile "org.jetbrains.anko:anko-support-v4:$versions.anko",
compile "org.jetbrains.anko:anko-design:$versions.anko",
compile "org.jetbrains.anko:anko-appcompat-v7:$versions.anko",
compile "org.jetbrains.anko:anko-cardview-v7:$versions.anko",
compile "org.jetbrains.anko:anko-recyclerview-v7:$versions.anko",
compile "org.jetbrains.anko:anko-gridlayout-v7:$versions.anko",

作为一个后续问题:如果lparams确实已经消失了,那么还有比我现在做的更优雅的替代品吗?



1> Gustorn..:

显然lparams仍然存在,但不能用作最外层布局的扩展功能:

因此以下代码失败:

override fun createView(ui: AnkoContext) = ui.apply {
    verticalLayout {
        // Layout elements here
    }.lparams { 
        // Layout params here
    }
}.view

但这编译很好:

override fun createView(ui: AnkoContext) = ui.apply {
    verticalLayout {
        lparams {
            // Layout params here
        }

        // Layout elements here
        verticalLayout { }.lparams {
            // lparams works fine if there is a parent layout
        }
    } 
}.view

值得注意的是,不lparams鼓励使用非拖尾版本的内部布局:LayoutParams当嵌套布局具有不同类型时,它将创建错误的子类.有关完整的讨论,请参阅此GitHub问题.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有