Android 数据绑定 SetSupportActionBar
Posted
技术标签:
【中文标题】Android 数据绑定 SetSupportActionBar【英文标题】:Android Data Binding SetSupportActionBar 【发布时间】:2016-04-10 18:26:11 【问题描述】:您好,我想知道这个函数是否有一个使用 android 数据绑定库的 xml 标记,或者如何在没有 findViewById() 方法的情况下实现这一点
谢谢
【问题讨论】:
developer.android.com/reference/android/view/View.html下面的链接还有其他方法 【参考方案1】:可以访问工具栏的实例using views by id函数
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay" />
然后在您的 onCreate()
方法上执行以下操作
ActivityGalleryBinding binding = DataBindingUtil
.setContentView(this, R.layout.activity_gallery);
binding.setViewModel(new GalleryModel(this));
//set it like this
setSupportActionBar(binding.<location>.<of>.<your>.toolbar);
如果您的工具栏在其他 xml 组件中(引用 <include/>
),您仍然可以访问它,只要您提供 @id
到 <include/>
【讨论】:
如果工具栏包含在包含布局中怎么办?或者如果包含的布局中有多个视图? 我在自定义工具栏中使用了DataBinding
,并使用了<include>
,工具栏在activity_main.xml
中使用,但我没有在activity_main.xml
中使用DataBinding
,那么如何获得@ mainActivity 中的 987654333@。
如果binding.root.toolbar
在<include>
里面呢?【参考方案2】:
在Android Studio中制作项目,然后您可以使用以下代码访问工具栏:
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
setSupportActionBar(binding.toolbar);
【讨论】:
【参考方案3】:<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<data>
<variable
type="com.example.viewModel"
name="viewModel"
/>
</data>
<android.support.v7.widget.Toolbar
android:layout_
android:layout_
app:title="@viewModel.title"/>
</layout>
【讨论】:
能否分享更改标题的视图模型代码?【参考方案4】:您可以这样使用它。经过多次搜索后,这回答了我。
使用id
作为您的包含,例如我的工具栏ID 是tb
,包含id
是mtoolbar
现在使用setSupportActionBar(mainBinding.mtoolbar.tb);
【讨论】:
以上是关于Android 数据绑定 SetSupportActionBar的主要内容,如果未能解决你的问题,请参考以下文章
Android 数据绑定库 vs Kotlin Android 扩展
Android 数据绑定:在生成的数据绑定文件中找不到 ...BindingImpl
Android 数据绑定 DatabindingUtil 与绑定类