- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我读到使用 Anko 的最大好处是它的可重用性。但我找不到它的确切例子。
目前在新的Android布局系统中,样板如下:
DrawerLayout (with some setup)
CoordinatorLayout (with some setup)
AppBarLayout (with some setup)
ToolBar
<The Main Content>
NavigationView (with header inflated)
从上面的布局结构来看,只有<The Main Content>
是变化的。和在许多情况下,这些仪式设置几乎在每项 Activity 中都重复。
所以我在这里与 Anko 一起思考是否有关于该问题的可重用解决方案。我不希望它可重复用于通用布局,但至少我可以最小化项目中的仪式代码。也许我需要类似的东西:
class MainUI: AnkoComponent<MainActivity> {
override fun createView(ui: AnkoContext<MainActivity>): View{
return with(ui) {
myCustomRootLayout {
//here is what <The Main Content> will be
}
}
}
}
从上面的代码我期待 myCustomRootLayout
将为根布局进行所有仪式设置,例如(DrawerLayout、CoordinatorLayout 等)。
这可能吗?
编辑所以我认为我的问题是:如何制作可以托管其他组件的自定义组件
最佳答案
重用代码的一种方法是简单地将 myCustomRootLayout
提取到扩展方法中,如下所示:
class MainUI: AnkoComponent<MainActivity> {
override fun createView(ui: AnkoContext<MainActivity>): View {
return with(ui) {
myCustomRootLayout {
recyclerView()
}
}
}
}
fun <T> AnkoContext<T>.myCustomRootLayout(customize: AnkoContext<T>.() -> Unit = {}): View {
return relativeLayout {
button("Hello")
textView("myFriend")
customize()
}
}
但是作为 stated in the documentation :
Although you can use the DSL directly (in
onCreate()
or everywhere else), without creating any extra classes, it is often convenient to have UI in the separate class. If you use the provided AnkoComponent interface, you also you get a DSL layout preview feature for free.
将可重复使用的部分提取到单独的 AnkoComponent
中似乎是个好主意:
class MainUI : AnkoComponent<MainActivity> {
override fun createView(ui: AnkoContext<MainActivity>): View {
return with(ui) {
MyCustomRootLayout<MainActivity>({
recyclerView()
}).createView(ui)
}
}
}
class MyCustomRootLayout<T : Context>(val customize: AnkoContext<T>.() -> Unit = {}) : AnkoComponent<T> {
override fun createView(ui: AnkoContext<T>) = with(ui) {
relativeLayout {
button("Hello")
textView("myFriend")
customize()
}
}
}
关于android - 是否可以在 Kotlin Anko 中重用布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40076956/
我使用 Anko DSL 制作了这个警报,并且没有在分辨率较低的设备上显示。 dialog = alert { customView {
我正试图接触 Anko 并遇到了这个问题。在其文档中说 Anko 有一个 convenience methods for logging ,我试过了,但 Android Studio 不会自动导入它,
有没有办法使用 Anko 将主题和样式添加到布局中?谢谢 最佳答案 我只是谷歌了同样的问题,并找到了答案 here 主题 Anko 也支持通过在任何 View 或布局之前的 themed 前缀来覆盖
我正在显示带有消息和确定按钮的警报对话框。但是确定按钮的颜色和按钮的文本是相同的 context!!.alert ("this test message for the dialog aleat"){
有了 Anko,我可以写这样的东西来显示对话框: alert("Dialog title") { yesButton {} noButton {} }.show() 如何为按钮设置标题?
在 anko/kotlin 中做 horizontalLayout 的好方法是什么? verticalLayout 工作正常 - 可以在其上设置方向,但感觉不对。不知道我在那里缺少什么。 最佳答案
GitHub 仓库链接:https://github.com/mattn/anko 1. anko 是干嘛用的? anko 是一个可以让 Go 项目支持脚本语言的小工具。换句话说,就是我们可以给
当在 Anko 的警报生成器中使用 positiveButton 和 negativeButton 时,即使 dismiss() ,它们似乎都会导致关闭对话框不被调用。有什么方法可以在单击按钮后保持对
我有这个问题: 错误: C:\Users\avi12\OneDrive\Documents\AndroidApps\WhatsApp Easy Sticker Maker\app\src\main\j
我对android开发完全陌生,所以我几天前才安装了Android studio。我创建了一个支持 Kotlin 的新项目和一个空 Activity ,并想使用 anko 库创建一个对话框。 我的 M
我正在使用 anko bg 功能来管理后台任务。 代码如下 import com.github.kittinunf.fuel.core.FuelError import com.github.kitt
我创建了一个自定义样式: wrap_content wrap_content 5dp 然后我用静态函数扩展了anko: inline fun ViewManager.sta
关注this slightly outdated tutorial之后,我一直在尝试使用 org.jetbrains.anko.design.floatingActionButton。错误是: Can
我正在 Android Studio 中创建一个项目,并且正在使用 Anko 库在单独的线程上运行 API 请求。所述线程只是进行 HTTP GET 调用并解析数据,同时 UI 线程传递所述数据并启动
使用 Anko,可以很容易地访问之前定义的组件。例如: verticalLayout { val name = editText() button("Say Hello") {
Anko Commons - Intent Usage 我如何准确地将 RecyclerView Adapter/else 中 Anko Commons 的 Intent 用于新的 Activity?
我是 anko 和协程的新手,所以如果我问一些琐碎的事情,请原谅 :) 所以我想要做的是让用户点击一个按钮,然后我想从互联网上下载一个 JSON,将它存储在本地并解析它。由于这两个操作都需要相当长的时
我正在尝试使用 anko 在警报中添加微调器。到目前为止,我的代码如下所示: alert(getString(R.string.alert)) { positiveButton
我正在尝试使用 Anko Commons – Logging 但出于某种原因,详细信息和调试信息没有显示在 logcat 上 但是,当我使用 Log.d 时,它按预期工作。 当我尝试这段代码时 ver
我正在使用 Anko DSL 编写 Android 布局。在定义 TextView 时,我想让它居中对齐,所以我这样写: verticalLayout { textView(R.string.
我是一名优秀的程序员,十分优秀!