在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设置点击事件就可以