Android界面编程

1、线性布局

orientation为排列方式horizontal水平排列,vertical垂直排列(默认值)(各组件之间的关系)

gravity为布局管理器内组建的对齐方式 支持多组合使用“|”同时使用  在父容器中的位置

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="horizontal"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:gravity="top"
 

2、表格布局

属性:Shrinkable 可以被收缩   组件字体过多的时候回收缩换行

Stretchable 可以被拉伸

Collapsed 该列的所有单元格会被隐藏

表格布局 可以看成是一个 表格,TableRow 是表格中的一行

实例:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<!-- 定义第一个表格布局,指定第2列允许收缩,第3列允许拉伸 -->
<TableLayout android:id="@+id/TableLayout01" 
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content"
	android:shrinkColumns="1"
	android:stretchColumns="2"

>
<!-- 直接添加按钮,它自己会占一行 -->
<Button android:id="@+id/ok1" 
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="一行"
	/>
<!-- 添加一个表格行 -->
<TableRow>
<!-- 为该表格行添加3个按钮 -->
<Button android:id="@+id/ok2" 
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="普通按钮"
	/> 	
<Button android:id="@+id/ok3" 
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="允许被收缩的按钮"
	/> 
<Button android:id="@+id/ok4" 
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="允许被拉伸的按钮"
	/>
</TableRow>	
</TableLayout>
 

3、帧布局

类似于AWT中的CardLayOut

package org.crazyit.framelayout;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;

/**
 * Description:
 * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee [email protected]
 * @version  1.0
 */
public class FrameLayoutTest extends Activity
{
	private int currentColor = 0;
	//定义一个颜色数组
	final int[] colors = new int[]
	{
		R.color.color7,
		R.color.color6,
		R.color.color5,
		R.color.color4,	
		R.color.color3,
		R.color.color2,
		R.color.color1,	
	};
	final int[] names = new int[]
	{
		R.id.View01,
		R.id.View02,
		R.id.View03,
		R.id.View04,
		R.id.View05,
		R.id.View06,
		R.id.View07
	};
	TextView[] views = new TextView[7];
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);	
		for (int i = 0 ; i < 7 ; i++)
		{
			views[i] = (TextView)findViewById(names[i]);
		}
		final Handler handler = new Handler()
		{
			@Override
			public void handleMessage(Message msg)
			{
				//表明消息来自本程序所发送
				if(msg.what == 0x1122)
				{ //这貌似还是个不错的数据结构。。数组霓虹灯交换数据,,偏移量
					//依次改变7个TextView的背景色
					for(int i = 0 ; i < 7 - currentColor ; i++)	
					{
						views[i].setBackgroundResource(colors[i + currentColor]);
					}
					for(int i = 7 - currentColor , j = 0 ; i < 7 ; i++ ,j++)
					{
						views[i].setBackgroundResource(colors[j]);
					}
				}
				super.handleMessage(msg);
			}
		};
		//定义一个线程周期性的改变currentColor变量值
		new Timer().schedule(new TimerTask()
		{
			@Override
			public void run()
			{
				currentColor++;
				if(currentColor >= 6)
				{
					currentColor = 0;
				}
				//发送一条消息通知系统改变7个TextView组件的背景色
				Message m = new Message();
				//给该消息定义一个标识
				m.what = 0x1122;
				handler.sendMessage(m);	
			}		
		}, 0 , 100); 
	}
}
 

4、相对布局

2.4

2.4.1自动完成文本框

package org.crazyit.autocomplete;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

/**
 * Description:
 * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee [email protected]
 * @version  1.0
 */
public class AutoCompleteTextViewTest extends Activity
{
	//定义字符串数组,作为提示的文本
	String[] books = new String[]{
		"java Java讲义",
		"java Ajax讲义",
		"java XML讲义",
		"java Workflow讲义"
	};
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		//创建一个ArrayAdapter,封装数组
		ArrayAdapter<String> aa = new ArrayAdapter<String>(
			this,
			android.R.layout.simple_dropdown_item_1line,
			books);
		AutoCompleteTextView actv = (AutoCompleteTextView)
			findViewById(R.id.auto);
		//设置Adapter
		actv.setAdapter(aa);
		
	}
}
 

猜你喜欢

转载自zhangfy068.iteye.com/blog/1736746