随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)
布局资源是Android中最常用的一种资源,Android可以将屏幕中组件的布局方式定义在一个XML中,这有点像Web开发中的HTML页面。我们可以调用Activity.setContentView()方法,将布局文件展示在Activity上。Android通过LayoutInflater类将XML文件中的组件解析为可视化的视图组件。
下面通过一个实例来演示布局文件的简单使用:
Activity:
package com.lovo;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
public class TestLayoutActivity extends Activity {
private TextView myTextView;
private EditText myEditText;
private Button myButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_layout);
// 通过findViewById方法获得TextView实例
myTextView = (TextView) findViewById(R.id.TextView);
// 通过findViewById方法获得EditText实例
myEditText = (EditText) findViewById(R.id.EditText);
// 通过findViewById方法获得Button实例
myButton = (Button) findViewById(R.id.btn);
myButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 得到输入框的内容
String str = myEditText.getText().toString();
// 把输入框的内容设置到TextView中
myTextView.setText(str);
}
});
}
}
布局XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!--
以上四个属性分别是命名空间、组件布局方向(这里是垂直)、
布局的宽(充满屏幕)、和高(充满屏幕)
-->
<!-- 以下嵌套一个TableLayout -->
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="1" >
<!-- stretchColumns设置指定的列可伸展,下标从0开始,该列会尽量填满可用空间,多列用“,”隔开 -->
<TableRow>
<TextView
android:id="@+id/layoutTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试Layout:" />
<!--
以上四个属性分别是:文本内容、引用组件的ID、组件的宽(内容的宽)、
组件的高(内容的高)
-->
<EditText
android:id="@+id/EditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</TableRow>
<!-- gravity指内部组件相对本身容器的位置 -->
<TableRow android:gravity="right" >
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击获取输入框内容" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/TextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</TableRow>
</TableLayout>
</LinearLayout>