androidinclude控件详解
在Android的开发中,我们知道布局⽂件可以让我们很⽅便的对各个UI控件进⾏位置安排跟属性设置,⽽在程序中可以直接取得控件并赋予对应操作功能。但是,如果是⼀个复杂的界⾯设计,我们把所有布局都放在⼀个⽂件中来描述,那这个⽂件会显得⽐较臃肿⽽结构则变得⽆法清晰了。为此,Android为我们提供了⼀个武功⾼强的⾼⼿,这个⾼⼿的特异功能就是能够将⼏个不同的布局⽂件整合在⼀起,它的名字叫include,听名字就知道是包含的意思,当然是包括多个布局。
由于是讲布局的安排跟组合,那我们这⾥就只拿布局⽂件来解析下,其他程序代码跟其他程序没区别。
第⼀个例⼦:
这⾥我们以最简单的控件TextView来举例,总共假设3个布局⽂件,其中⼀个布局包含了其他两个⼦布局。⽗布局layoutP:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<include android:id="@+id/cell1" layout="@layout/includeA" />
<include android:id="@+id/cell2"
android:layout_width="fill_parent"
layout="@layout/includeB" />
</LinearLayout>
⼦布局⼀layoutA:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="schemas.android/apk/res/android"
android:text="随时随地,即兴时代!"
android:layout_width="wrap_content"
android:layout_height="wrap_content">android layout布局
</TextView>
⼦布局⼆layoutB:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="schemas.android/apk/res/android"
android:text="ATAAW.COM"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
通过以上layoutP中的整合,layoutA与layoutB就成为layoutP中的⼦元素,不仅使得整个布局代码结构清晰,提⾼了可读性,⽽且可以将界⾯排版中的功能模块清楚的划分。
第⼆个例⼦:
如果在程序中多次⽤到⼀部分相同的布局,可以先将这部分布局定义为⼀个单独的XML,然后在需要的地⽅
通过<include>引⼊,如下:
使⽤include时需要注意的是要指定宽⾼属性,要不可能会出现⼀些意想不到的效果,⽐如引⽤了三次,⽽界⾯上只显⽰了⼀个item,需要包含的xml⽂件,我这⾥就放了⼀个Button按钮:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout[/b] xmlns:android="schemas.android/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button">
</Button>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?> [/align]<LinearLayout
xmlns:android="schemas.android/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<include android:id="@+id/in1" layout="@layout/btn"/>
<include android:id="@+id/in2" layout="@layout/btn"/>
<TextView android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout>
TestActivity:
package com.hilary;
import android.app.Activity;
aphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;[/size]
import com.hialry.R;
public class TestActivity extends Activity {
private TextView tv = null;
private LinearLayout ll = null;
private LinearLayout ll2 = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.tv);
/
/如果⼀个布局⽂件中包含同⼀个xml⽂件,这两个xml中的控件Id是⼀样的,当需要操作这些控件时,需要通过定义这两个View来加以区分,
//如果就包含同⼀个xml⽂件侧不需要此步操作
ll = (LinearLayout) findViewById(R.id.in1);
ll2 = (LinearLayout) findViewById(R.id.in2);
ll.setBackgroundColor(Color.RED);
Button btn = (Button) ll.findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
tv.setText("My name is hilary");
}
});
Button btn2 = (Button) ll2.findViewById(R.id.btn);
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
tv.setText(" You select second Button!");
}
});
}
}
这只是在xml⽂件中引⼊另⼀种布局的⼀种⽅法,我们还可以在代码中直接引⼊,⽽不需要在xml中定义要引⼊的⽂件.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。