我的布局是有点页脚视图,几乎包含在所有布局中。
假设我们举一个不直接出现在活动布局中的textview示例,而不是布局中包含的不同布局。
示例案例:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginTop="0dp"
android:layout_gravity="bottom"
android:gravity="bottom|center">
<ImageView
android:id="@+id/img_awesome_intro"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_awesome_intro"
android:layout_marginBottom="@dimen/dp_awesome_intro_margin_bottom"
android:scaleType="fitXY"
android:src="@drawable/ic_welcome_intro" />
<include
layout="@layout/BarButton"
android:id="@+id/btn_welcome_join"
android:layout_width="fill_parent"
android:layout_height="@dimen/dp_awesome_learnmore_size" />
<include
layout="@layout/BarButton"
android:layout_width="fill_parent"
android:id="@+id/btn_welcome_learnmore"
android:layout_height="@dimen/dp_awesome_learnmore_size" />
</LinearLayout>
包含的BarButton布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#229DCF"
android:orientation="horizontal"
android:paddingLeft="15dp"
android:paddingRight="@dimen/dp_button_margin_right"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:textSize="@dimen/sp_button_title"
android:textColor="@color/white"
android:layout_gravity="center_horizontal|center_vertical"
android:id="@+id/titleLbl" />
<ImageView
android:id="@+id/iconImg"
android:layout_width="@dimen/dp_button_imgsize"
android:layout_height="@dimen/dp_button_imgsize"
android:layout_marginTop="5px"
android:layout_marginLeft="@dimen/dp_button_margin_betweentxt"
android:layout_gravity="center_horizontal|center_vertical"
android:src="@drawable/ic_forward_arrow" />
</LinearLayout>
我的问题是如何将Textview click事件绑定到viewmodel的命令 此文本视图存在于BarButton布局中,而不是直接在活动布局中。
答案 0 :(得分:2)
您仍然可以绑定到TextView
。 include只是Android's layout system提供的一种模式,用于创建可重用的布局。创建布局树时,它会将include中定义的元素添加到现有布局中。
要有效地重复使用完整版面,您可以使用
<include/>
和<merge/>
标记以在当前布局中嵌入另一个布局。
然后,您可以使用XML或Fluent绑定来执行命令。
<TextView
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:textSize="@dimen/sp_button_title"
android:textColor="@color/white"
android:layout_gravity="center_horizontal|center_vertical"
android:id="@+id/titleLbl"
app:MvxBind="Click MyCommand"/>
var title = FindViewById<TextView>(Resource.Id.titleLbl);
...
bindingSet.Bind(title)
.For(c => c.BindClick())
.To(vm => vm.MyCommand)
.Apply();
如果要在ViewModel
(页面/布局)之间减少此命令的重复,可以在基类中共享ViewModel
命令。