我正在尝试制作一个可以插入到其他 Anko 组件中的工具栏。这是我要做什么的一个例子:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
MainUI().setContentView(this)
val toolbar: Toolbar = find(R.id.toolbar)
setSupportActionBar(toolbar)
}
}
class MainUI : AnkoComponent<MainActivity> {
override fun createView(ui: AnkoContext<MainActivity>) = with(ui) {
coordinatorLayout {
fitsSystemWindows = true
lparams {
width = matchParent
height = matchParent
}
ToolbarUI().createView(ui).lparams { width = matchParent }
recyclerView {...}.lparams {
width = matchParent
height = matchParent
behavior = AppBarLayout.ScrollingViewBehavior()
}
}
}
}
class ToolbarUI : AnkoComponent<AppCompatActivity> {
override fun createView(ui: AnkoContext<AppCompatActivity>) = with(ui) {
appBarLayout {
...
toolbar {
setTitleTextColor(Color.WHITE)
id = R.id.toolbar
title = resources.getString(R.string.main_activity)
...
}.lparams {
width = matchParent
height = wrapContent
}
}
}
}
这样,我可以在其他地方使用相同的 AppBarLayout,而代码少得多。但我得到了这个:
java.lang.IllegalStateException: View is already set: org.jetbrains.anko.design._AppBarLayout
任何人都可以帮助我以正确的方式实现这一点?