目录
1. 什么是include
?
include
就是在一个布局中,导入另一个布局
2. 为什么使用include
?
相同的页面只需要写一次,在需要的地方include
即可,提高了共通布局的复用性。
3. 怎么使用include
?
3.1 步骤
- 定义共通布局
include
共通布局
3.2 Sample
3.2.1 定义共通布局:include_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/include_lay"
android:clickable="true"
android:focusable="true"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="这是文字"
android:padding="16dp"
android:background="@color/colorAccent"
android:clickable="false"
android:focusable="false"
android:layout_marginBottom="10dp"
/>
</LinearLayout>
3.2.2 在想要引入的布局中引入activity_include.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<include layout="@layout/include_layout"/>
</LinearLayout>
3.2.3 运行效果:
4 include
之后,布局变成了什么样?
-
include布局伪代码
<LinearLayout> <include layout="@layout/include_layout"/> </LinearLayout>
-
运行时,布局实际结构
<LinearLayout> <LinearLayout id="include_lay"> <TextView/> </LinearLayout> </LinearLayout>
4.1 当我们include
两个同样的布局时
如果想要获取id
为include_lay
的控件实际上为第一个id
为include_lay
的控件,
-
include的布局伪代码:
<LinearLayout> <include layout="@layout/include_layout"/> <include layout="@layout/include_layout"/> </LinearLayout>
-
运行时布局实际结构
<LinearLayout> <LinearLayout id="include_lay"> <TextView/> </LinearLayout> <LinearLayout id="include_lay"> <TextView/> </LinearLayout> </LinearLayout>
看图说话:
此时如果,通过findViewById(R.id.include_lay)
获取控件并设置点击事件,则第一个点击时响应,第二个不响应
4.2 当include
两个相同的布局时,如何区别?
可以在include
时指定一个新的id,用来区别。
4.2.1 include
之后,使用新的id区分
<LinearLayout>
<include layout="@layout/include_layout"
android:id="@+id/include_lay_1"/>
<include layout="@layout/include_layout"
android:id="@+id/include_lay_2"/>
</LinearLayout>
4.2.2 这时通过include
时指定的id来获取View
,就是对应的LinearLayout
LinearLayout include1 = findViewById(R.id.include_lay_1);
LinearLayout include2 = findViewById(R.id.include_lay_2);
4.2.3 此时运行时布局实际结构?
<LinearLayout>
<LinearLayout id="include_lay_1">
<TextView />
</LinearLayout>
<LinearLayout id="include_lay_2">
<TextView />
</LinearLayout>
</LinearLayout>
看图说话:
相当于将原来的指定的id
冲掉,又指定了新的id
推荐视频教程:
广告:
我使用的装备备:程序员必备 | 不伤关节 | 手感好 | 静电容 | Plum键盘|Niz键盘 戳我