如何将自定义视图组添加到Anko DSL?

Netimen

Anko文档告诉我们如何向DSL添加自定义视图。但是,如果我的自定义视图是视图组,则会出现问题。

class MyFrameLayout(context: Context) : FrameLayout(context)

fun ViewManager.myFrameLayout(init: MyFrameLayout.() -> Unit = {}) = ankoView({ MyFrameLayout(it) }, init)

class MyUI : AnkoComponent<Fragment> {
    override fun createView(ui: AnkoContext<Fragment>) = with(ui) {

        myFrameLayout {
            textView("hello").lparams { // error: Unresolved reference: lparams
                bottomMargin = dip(40)
            }
        }
    }
}

但如果我将myFrameLayout调用更改frameLayout可以则可以。那么,使视图组与Anko DSL一起使用的正确方法是什么?

Netimen

如果我们看一下Anko的源代码,我们可以看到实际上frameLayout返回了一个_FrameLayout的实例,其中lparams定义了这些函数。以我的理解,这是必需的,因此这些lparams功能仅在布局构建代码中可用。

在Anko的Layouts.kt文件中_<ViewGroup>,每个受支持的类都有这些ViewGroup

因此,支持自定义视图组的直接方法是_<ViewGroup>使用lparams方法实现创建一个问题是_<ViewGroup>该类通常包含比我<ViewGroup>本身更多的代码

而且,如果我想创建许多自定义视图组,则使用这种方法添加对它们的Anko支持变得很痛苦。比方说,我有MyFrameLayout1MyFrameLayout2MyFrameLayout3类。它们基本上FrameLayout是,因此我希望它们可以使用相同的布局参数。但我要创造_FrameLayout1_FrameLayout2_FrameLaoyt3类它们只是复制/粘贴安口的的_FrameLayout

所以我略微改进了这种方法。我创建一个interface _FrameLayout

interface _FrameLayout {
    // copy/paste from Anko's _FrameLayout
}

现在要支持任何自定义FrameLayout子类,我只需要:

class _MyFrameLayout(ctx: Context) : MyFrameLayout(ctx), _FrameLayout

fun ViewManager.myFrameLayout(init: _MyFrameLayout.() -> Unit = {})= ankoView({ _MyFrameLayout(it) }, init) 

创建许多自定义视图组时,这可以大大减少复制/粘贴。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何正确地将自定义视图添加到工具栏?

来自分类Dev

将自定义视图添加到警报视图

来自分类Dev

如何将自定义标签添加到facet_grid()

来自分类Dev

如何将自定义/额外属性添加到Mediawiki链接?

来自分类Dev

如何将自定义图像标记添加到pagedown?

来自分类Dev

如何将自定义.aspx页添加到sitecore?

来自分类Dev

如何将自定义xtype添加到另一个视图?

来自分类Dev

如何将自定义全局JavaScript添加到MediaWiki

来自分类Dev

使用CocoaPods时如何将自定义项目配置添加到Xcode?

来自分类Dev

如何将自定义字段添加到Stripe Checkout的弹出窗体中

来自分类Dev

如何将自定义数据添加到标记(Google Maps API SWIFT)

来自分类Dev

如何将自定义按钮添加到AVPlayerViewController?

来自分类Dev

将自定义视图(tileview)添加到布局?

来自分类Dev

如何将自定义ApplicationContextInitializer添加到Spring Boot应用程序?

来自分类Dev

WordPress-如何将自定义元框添加到特定的管理页面?

来自分类Dev

如何将自定义搜索链接添加到Spring Data Rest

来自分类Dev

如何将自定义库添加到暂存文件

来自分类Dev

如何将自定义属性添加到传单0.7.7标记中?

来自分类Dev

如何将自定义验证添加到角度组件?

来自分类Dev

如何将自定义属性添加到Symfony Doctrine YAML映射文件中

来自分类Dev

如何将自定义字体大小添加到QuillJS编辑器

来自分类Dev

如何将自定义事件添加到NativeScript UI插件

来自分类Dev

如何将自定义DSL添加到Gremlin Console

来自分类Dev

将自定义视图添加到警报视图

来自分类Dev

如何将自定义xtype添加到另一个视图?

来自分类Dev

如何将自定义地图和自定义数据添加到Highmaps?

来自分类Dev

如何将自定义xml添加到Oracle XML Publisher数据定义

来自分类Dev

如何将自定义警报对话框中的项目添加到列表视图?

来自分类Dev

如何将自定义文件添加到自定义文章列表页面

Related 相关文章

  1. 1

    如何正确地将自定义视图添加到工具栏?

  2. 2

    将自定义视图添加到警报视图

  3. 3

    如何将自定义标签添加到facet_grid()

  4. 4

    如何将自定义/额外属性添加到Mediawiki链接?

  5. 5

    如何将自定义图像标记添加到pagedown?

  6. 6

    如何将自定义.aspx页添加到sitecore?

  7. 7

    如何将自定义xtype添加到另一个视图?

  8. 8

    如何将自定义全局JavaScript添加到MediaWiki

  9. 9

    使用CocoaPods时如何将自定义项目配置添加到Xcode?

  10. 10

    如何将自定义字段添加到Stripe Checkout的弹出窗体中

  11. 11

    如何将自定义数据添加到标记(Google Maps API SWIFT)

  12. 12

    如何将自定义按钮添加到AVPlayerViewController?

  13. 13

    将自定义视图(tileview)添加到布局?

  14. 14

    如何将自定义ApplicationContextInitializer添加到Spring Boot应用程序?

  15. 15

    WordPress-如何将自定义元框添加到特定的管理页面?

  16. 16

    如何将自定义搜索链接添加到Spring Data Rest

  17. 17

    如何将自定义库添加到暂存文件

  18. 18

    如何将自定义属性添加到传单0.7.7标记中?

  19. 19

    如何将自定义验证添加到角度组件?

  20. 20

    如何将自定义属性添加到Symfony Doctrine YAML映射文件中

  21. 21

    如何将自定义字体大小添加到QuillJS编辑器

  22. 22

    如何将自定义事件添加到NativeScript UI插件

  23. 23

    如何将自定义DSL添加到Gremlin Console

  24. 24

    将自定义视图添加到警报视图

  25. 25

    如何将自定义xtype添加到另一个视图?

  26. 26

    如何将自定义地图和自定义数据添加到Highmaps?

  27. 27

    如何将自定义xml添加到Oracle XML Publisher数据定义

  28. 28

    如何将自定义警报对话框中的项目添加到列表视图?

  29. 29

    如何将自定义文件添加到自定义文章列表页面

热门标签

归档