按照道理下面这个 linearLayout 的 lparams{} 设置的参数不应该是给 linearLayout,但 as 提示的是上一个层级的 relativeLayout,实际设置的效果也是给 relativeLayout 。
1
anthonyeef 2020-06-30 23:59:06 +08:00
这里 IDE 提示 RelativeLayout.LayoutParams 不是在说 `这个参数是给谁`
而是在表明:this 的属性 是什么 |
2
Michelangelono OP @anthonyeef 关键是我给 linearLayout 设置的参数,实际效果成了给上一层级的 relativeLayout
|
3
sunbreak 2020-07-01 07:42:38 +08:00
@Michelangelono 这就是 Anko 的原本设计,linearLayout {}.lparams 是设置 linearLayout 自己的在父布局的 layout
|
4
7hens 2020-07-01 09:03:33 +08:00 via Android
anko 官方已经弃坑了,建议不要使用。
|
5
Michelangelono OP @sunbreak 关键是上面的 textview 又是对的,那正确的写法是?
|
6
Michelangelono OP @7hens 怎么看出来官方放弃了?
|
7
Michelangelono OP 解决了,应该这样写:
linearLayout { backgroundColor = context.color(R.color.color666) }.lparams { width = matchParent height = dip(1) alignParentBottom() } |
8
sunbreak 2020-07-01 09:44:05 +08:00
@Michelangelono https://github.com/Kotlin/anko,README.md 第一句“Anko is deprecated. Please see this page for more information.”
建议看看 Android Jetpact Compose 或者 Flutter 吧,也是 DSL 声明式 UI 框架 |
9
Michelangelono OP @sunbreak Android Jetpact Compose 好像还不错,我试下
|
10
gz911122 2020-07-01 10:13:30 +08:00
anko 官方放弃了.
建议改用 Android Jetpact Compose |
11
vanillaxxx 2020-07-01 10:15:52 +08:00 via iPhone
我记得去年就弃了
|
12
loshine1992 2020-07-01 10:29:43 +08:00
上面都是写 Android 的么?
你的 LinearLayout 是 RelativeLayout 的子 View,它的 LayoutParams 是它在 RelativeLayout 里怎么放, 所以是 RelativeLayout.LayoutParams 不信你在 LinearLayout 里面再放一个 TextView 设置 LayoutParams 看看是不是 LinearLayout.LayoutParams |
13
blackbond 2020-07-01 10:36:33 +08:00
@loshine1992 正解
|
14
winterbells 2020-07-01 12:08:36 +08:00 via Android
Jetpack compose 目前也比较迷
想学来着,结果新项目创建都编译不过。。。 等 beta 出来了再说 qaq |
15
Michelangelono OP @winterbells 那我还是不搞这个了……想抛弃 xml 真的太难了
|
16
winterbells 2020-07-01 16:02:53 +08:00 via Android
@Michelangelono
刚才试了一下官方的 JetNews demo,可以运行了 --- 我们已经抛弃 XML 了,代价是用纯 Kotlin 代码画布局 qaq 不是 ASL 也不是 Compose,就是 TextView(context) 这种写法。。 这应该是种趋势吧,等 JC 正式版出来应该会切换 |
17
Michelangelono OP @winterbells 效率的增加有肉眼可见的区别吗?
|
18
winterbells 2020-07-01 17:49:34 +08:00 via Android
@Michelangelono 说是为了保证 90 帧及以上也流畅
|
19
fansangg 2020-07-04 01:31:40 +08:00
@Michelangelono 怎么装逼怎么来
|
20
yaocai321 2020-07-04 13:52:20 +08:00
LinearLayout 是 RelativeLayout 的子 view,所以他的 LayoutParams 是 RelatvieLayout.LayoutParams 有什么问题吗?
|