美文网首页
Anko实际使用中的一些坑

Anko实际使用中的一些坑

作者: 747a945a4501 | 来源:发表于2016-08-19 14:28 被阅读417次

前言


有点标题党了,但有一些坑其实也不是Anko本身的坑,Anko写布局其实就是用代码写布局,和以前的xml还是有一些区别的。
今天来说说这些坑( ps:今天只是讲用法,至于为什么各位自己Ctrl+鼠标左键点进去看源码 )


  1. 相对布局的约束需指名id
relativeLayout {
    val topView = textView {

    }.lparams( MATCH_PARENT , dip(30f) )

    textView {

    }.lparams(MATCH_PARENT, MATCH_PARENT) { below(topView) }
}

从上面可以看看 下面的TextView在 topView下面,但是实际运行起来确不是这样。 难道是below()没用?
当然不是!!你需要给topView加个id,这样才行。

val topView = textView {
      id = 0x12345
 }.lparams( MATCH_PARENT , dip(30f) )
  1. activity里面 new 控件或者布局,用anko写一定报错
    有人说我想用anko 额外的写个LinearLayout的,下面这样写行不行
    fun aaa() {
       ....
       val view = linearLayout {
           textView {}.lparams{}
           button {}.lparams{}
       }
       ....
    

}
```
运行起来就报错,什么原因,写的都是正确的啊。
前面原理的文章讲过了,你这个方法调用的是 Activity.linearLayout()。它会根据 上下文的对象,activity会setContextView(). 所以咱们得用Context的扩展方法

下面2中解决方法

val view = getContext().linearLayout { }

val view = UI { linearLayout { } }.view
  1. 用recycleView或者ListView,在adapter写每个item的布局时候,最外层的布局需指名LayoutParameter,看下面说明:
 //在Activity,不要指名relativeLayout的LayoutParameter,它就是充满
  onCreate(b:Builder) {
      relativeLayout {
    
      }
  }

//在Adapter中
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): AHolder {
  val rootView = kApplication.UI {
      linearLayout {
         //如果不指名最外层的linearLayout的LayoutParameter,默认的是item宽高度包裹内容
          layoutParams = viewGroupLP(MATCH_PARENT, WRAP_CONTENT)
      }
  }
 。。。
return AHolder(rootView)
}
  1. 用ViewPage的时候需设置id,不然会报如下错误:
    看下面说明:
 //在Activity,不要指名relativeLayout的LayoutParameter,它就是充满
  onCreate(b:Builder) {
      relativeLayout {
    
      }
  }

//在Adapter中
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): AHolder {
  val rootView = kApplication.UI {
      linearLayout {
         //如果不指名最外层的linearLayout的LayoutParameter,默认的是item宽高度包裹内容
          layoutParams = viewGroupLP(MATCH_PARENT, WRAP_CONTENT)
      }
  }
 。。。
return AHolder(rootView)
}

还有几个后续更新,今天写的太累了。。。

相关文章

网友评论

      本文标题:Anko实际使用中的一些坑

      本文链接:https://www.haomeiwen.com/subject/rzebsttx.html