我正在使用以下代码在导航标题中显示设备型号和品牌。布局夸大,但未显示文本。我在其他一些使用数据绑定的活动中尝试了相同的代码,并且工作正常。
我不确定,但是是否有必要使用DataBindingUtil.inflate,但是在我的情况下,该视图将用作NavigationBarheader。我已经在活动中验证了会生成NavigationViewHeaderBinding类,因此理想情况下应该可以正常工作。我可能是错的。
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<import type="android.os.Build" />
</data>
<LinearLayout
android:id="@+id/ll_nav_header_parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="20dp"
android:paddingTop="80dp"
android:paddingRight="20dp"
android:paddingBottom="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@{Build.BRAND}"
android:textAlignment="center"
android:textAllCaps="true"
android:textColor="@color/colorWhite"
android:textSize="18sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:text="@{Build.MODEL}"
android:textAlignment="center"
android:textColor="@color/colorWhite"
android:textSize="14sp" />
</LinearLayout>
这是主要的XML
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".home.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/activity_main" />
<com.andremion.floatingnavigationview.FloatingNavigationView
android:id="@+id/floating_navigation_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/fab_margin"
app:backgroundTint="@color/colorAccent"
app:drawMenuBelowFab="false"
app:headerLayout="@layout/navigation_view_header"
app:layout_anchor="@id/toolbar"
app:layout_anchorGravity="bottom|end"
app:menu="@menu/drawer_menu" />
</android.support.design.widget.CoordinatorLayout>
答案 0 :(得分:0)
如果要进行绑定,则必须通过数据绑定方式设置内容,该方式必须为以下之一-
活动-
DataBindingUtil.setContentView(this, R.layout.activity_main);
对于片段,对话框/列表-
ListItemBinding binding = ListItemBinding.inflate(layoutInflater, viewGroup, false);
// or
ListItemBinding binding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false);
此类包含布局属性中的所有绑定(对于 例如用户变量)到布局的视图,并知道如何 为绑定表达式分配值。
因此,您必须通过DataBinding方式设置内容,以使XML变量起作用。否则,生成的绑定类将不被使用。
在您的情况下,如果子布局是绑定布局,则要让子布局起作用,父级也必须是绑定布局,并通过使用绑定类进行充气。