我创建了以下布局:
class ExploreUI<T> : AnkoComponent<T> {
override fun createView(ui: AnkoContext<T>): View {
return with(ui) {
frameLayout {
val loadingIndicator = include<View>(R.layout.loading_indicator)
val content = nestedScrollView {
isFillViewport = true
visibility = View.GONE
verticalLayout {
/** New Releases */
themedTextView(R.string.new_releases, theme = R.style.DarkThemeHeaderText) {
id = R.id.releasesHeader
}.lparams {
padding = dip(10)
}.apply {
}
val releasesRecycler = recyclerView {
}.lparams(width = matchParent, height = wrapContent)
include<View>(R.layout.show_more)
/** Recommended playlists */
themedTextView(R.string.recommended_playlists, theme = R.style.DarkThemeHeaderText) {
id = R.id.releasesHeader
}.lparams {
padding = dip(10)
}.apply {
}
val playlistsRecycler = recyclerView {
}.lparams(width = matchParent, height = wrapContent)
include<View>(R.layout.show_more)
/** Recently played */
themedTextView(R.string.recently_played, theme = R.style.DarkThemeHeaderText) {
id = R.id.releasesHeader
}.lparams {
padding = dip(10)
}.apply {
}
val recentsRecycler = recyclerView {
}.lparams(width = matchParent, height = wrapContent)
include<View>(R.layout.show_more)
/** Popular artists */
themedTextView(R.string.popular_artists, theme = R.style.DarkThemeHeaderText) {
id = R.id.releasesHeader
}.lparams {
padding = dip(10)
}.apply {
}
val artistsRecycler = recyclerView {
}.lparams(width = matchParent, height = wrapContent)
include<View>(R.layout.show_more)
/** Recommended tracks */
themedTextView(R.string.most_recommeneded, theme = R.style.DarkThemeHeaderText) {
id = R.id.releasesHeader
}.lparams {
padding = dip(10)
}.apply {
}
val recommendedTracksRecycler = recyclerView {
}.lparams(width = matchParent, height = wrapContent)
include<View>(R.layout.show_more)
/** All time hits */
themedTextView(R.string.based_on_your_listening, theme = R.style.DarkThemeHeaderText) {
id = R.id.releasesHeader
}.lparams {
padding = dip(10)
}.apply {
}
val hitsRecycler = recyclerView {
}.lparams(width = matchParent, height = wrapContent)
include<View>(R.layout.show_more)
}
}
}
}
}
}
然后我按照以下内容在onCreateView
上夸大布局:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? =
ExploreUI().createView(AnkoContext.Companion.create(activity as AppCompatActivity, this))
我遇到的问题是访问我的UI类中定义的组件。我如何从我的片段中引用它们?
答案 0 :(得分:0)
问题的直接答案是将您感兴趣的值作为属性公开。
但是,我建议您使用ViewModel,以便您的片段不会直接与您的视图对话。片段的作用是将ViewModel绑定到视图。