在Android布局文件中 我们常常遇到布局文件的复用,虽然还是复用但还是需要加以区别来实现不同的逻辑,我在使用include遇到的问题和解决,用以记录。
MainActivity布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/backgroud">
<View style="@style/common_view_style"/>
<include
android:id="@+id/include1"
layout="@layout/work_view_entrance"></include>
<View style="@style/common_view_style"/>
<include
android:id="@+id/include2"
layout="@layout/work_view_entrance"></include>
<View style="@style/common_view_style" />
</LinearLayout>
work_view_entrance布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/common_layout_style"
android:id="@+id/ll_includetitle"
android:layout_width="368dp"
android:layout_height="wrap_content"
android:background="@drawable/listselector_selector"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/event_bg" />
<TextView
android:id="@+id/include_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:paddingBottom="7dp"
android:paddingRight="10dp"
android:paddingTop="7dp"
android:text="测试"
android:textColor="@color/blackness"
android:textSize="18sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@mipmap/icon_next" />
</LinearLayout>
现在我两次引用
work_view_entrance来布局 但是如何区别呢?
在include设置两个id 这样可以区分两个include布局文件,但是我需要改变work_view_entrance布局中textview设置text属性
View include1= findViewById(R.id.include1);
View include2= findViewById(R.id.include2);
TextView title1= (TextView) include1.findViewById(R.id.include_title);
TextView title2= (TextView) include2.findViewById(R.id.include_title);
如图 虽然 work_view_entrance中textView的id是相同的但是view的视图 include1和include2的view是不同的,因此他们的textview也是不同的;
但是,我在MainActivity布局文件中 有两个item,如何设置点击事件呢?我试图和textview一样 获取外层的LinearLayout,对LinearLayout设置点击事件,发现空指针
其实很简单 include1和include2设置点击事件就可以