include 就是在一个布局中引入另一个布局,include 可以使相同的页面就写一次,提高了共同布局的复用性。
1.先定义一个共用的布局
<?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_layout"
android:clickable="true"
android:focusable="true">
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="因为在一千年以后,世界早已没有我"
android:layout_margin="20dp"
android:textSize="20sp"
android:clickable="false"
android:focusable="false"
android:gravity="center"
android:background="@color/purple_200"/>
</LinearLayout>
2.使用include在布局中引用上面定义的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
tools:context=".MainActivity">
<include layout="@layout/include_layout"
android:id="@+id/include1"/>
<include layout="@layout/include_layout"
android:id="@+id/include2"/>
</LinearLayout>
引用两次一样的布局,需要添加id才可以分别修改它们的属性
3.在代码中尝试改变include布局的属性
public class MainActivity extends AppCompatActivity {
LinearLayout include1,include2;
TextView textView1,textView2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
include1 = findViewById(R.id.include1);
include2 = findViewById(R.id.include2);
include1.setBackgroundColor(Color.YELLOW);//给include1布局设置背景色
include2.setBackgroundColor(Color.BLUE);//给include2布局设置背景色
textView1 = include1.findViewById(R.id.text_view);//初始化include1里的textview
textView2 = include2.findViewById(R.id.text_view);//初始化include2里的textview
textView1.setBackgroundColor(Color.GREEN);//设置include1里textview的背景色
textView1.setText("心跳乱了节奏");//设置include1里textview的文字
textView2.setText("静止了,所有的花开");//设置include2里textview的文字
}
}
获取include里面的控件时注意,需要使用
textView1 = include1.findViewById(R.id.text_view); textView2 = include2.findViewById(R.id.text_view);