Главный вопрос: lparams
просто ушел из Anko, или я что-то ужасно не так делаю? Следующий фрагмент кода не компилируется:
verticalLayout {
}.lparams(width = matchParent, height = matchParent) {
topMargin = dip(10)
}
Пока это работает без проблем:
verticalLayout {
layoutParams = LinearLayout.LayoutParams(matchParent, matchParent).apply {
topMargin = dip(10)
}
}
Я бы не стал возражать против второго варианта, но вы должны указать тип макета при генерации параметров, что может быть немного утомительным (а также более хрупким, чем исходное решение).
Я ничего не нашел на Anko
странице GitHub, в журнале изменений или просмотром последних коммитов. Вот полный класс пользовательского интерфейса для справки:
class ReviewsFragmentUi(ctx: AnkoContext<ReviewsFragment>) : AnkoComponent<ReviewsFragment> {
override fun createView(ui: AnkoContext<ReviewsFragment>) = 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
действительно исчез, то есть ли более элегантная замена, чем то, что я уже делаю?