一、基本控件介绍


一般新建组件有两种方式:XML中定义和Java代码实现,一般XML中定义较为常用。

1.Button


按钮,在main.xml中定义如下:

<Button  android:layout_width="wrap_content"  <!--按钮宽度匹配文本的大小 -->android:layout_height="wrap_content"  <!--按钮高度匹配文本大小 -->android:text="文本"   <!--按钮的文本 -->android:id="@+id/button1"  <!--按钮的id -->></Button>

Button的监听器:onClickListener;

需要实现方法:public void onClick(View v); v表示触发的控件,比如按钮

代码示例:实现点击按钮生成随机数;


ButtonActivity.java

package org.xiazdong;import java.util.Random;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;public class ButtonActivity extends Activity implements OnClickListener{//实现点击监听器private Button button;private TextView tv;@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        button = (Button)findViewById(R.id.button1);//根据ID找组件        tv = (TextView)findViewById(R.id.tv);        button.setOnClickListener(this);//为button设置监听器    }@Overridepublic void onClick(View view) {String str = new Random().nextInt()+"";tv.setText(str);Toast.makeText(this, "点击了按钮!!", Toast.LENGTH_SHORT).show();//设置提示信息 Builder builder = new AlertDialog.Builder(this);//创建对话框     builder.setTitle("提示信息").setMessage("点击了按钮,随机数为:"+str).show();//设置对话框属性并显示}}


main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text=""         android:id="@+id/tv"        /><Button     android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="点击生成随机数"    android:id="@+id/button1"    ></Button></LinearLayout>

2.ImageButton


和Button的区别为背景可以自定义图片,在main.xml中定义如下:

<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content"android:id="@+id/ib1"android:background="@drawable/ic_launcher"/>  <!--设置按钮的背景为drawable文件夹下的ic_launcher图片 -->


代码示例:实现点击图片按钮就切换图片;


main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="@string/hello" /><ImageButton     android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:id="@+id/ib1"    android:background="@drawable/ic_launcher"/></LinearLayout>

ImageButtonActivity.java

package org.xiazdong;import android.app.Activity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.ImageButton;public class ImageButtonActivity extends Activity {private ImageButton ib1;@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        ib1 = (ImageButton) findViewById(R.id.ib1);        ib1.setOnTouchListener(new OnTouchListener(){@Overridepublic boolean onTouch(View v, MotionEvent event) {if(event.getAction()==MotionEvent.ACTION_DOWN){  //按下按钮时ib1.setBackgroundResource(R.drawable.logo);}else if(event.getAction()==MotionEvent.ACTION_UP){  //抬起按钮时ib1.setBackgroundResource(R.drawable.ic_launcher);}return false;}                });    }}

3.EditText


文本框,在main.xml中定义如下:

<EditText     android:id="@+id/name"     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:hint="输入用户名..."      android:inputType=""/>

可以在<EditText>中设置以下属性:
(1)android:inputType="number":输入类型为数字;

(2)android:maxLength="2":输入最长为2;

(3)android:singleLine="true":只能单行显示;

(4)android:password="true" :输入的形式为密码
(5)android:numeric="integer":输入整数

代码示例:实现用户登录;


main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <LinearLayout        xmlns:android="http://schemas.android.com/apk/res/android"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="horizontal" >        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="用户名:" />        <EditText            android:id="@+id/name"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:hint="输入用户名..."             android:inputType=""            />    </LinearLayout>    <LinearLayout        xmlns:android="http://schemas.android.com/apk/res/android"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="horizontal" > <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="密码:" />        <EditText            android:id="@+id/password"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:hint="输入密码..."            android:password="true" /></LinearLayout>        <Button            android:id="@+id/button"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:text="提交" >        </Button>    </LinearLayout>

EditTextActivity.java

package org.xiazdong;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class EditTextActivity extends Activity {private EditText name;private EditText password;private Button button;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);name = (EditText) findViewById(R.id.name);button = (Button) findViewById(R.id.button);password = (EditText) findViewById(R.id.password);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {String n = name.getText().toString();String p = password.getText().toString();Builder builder = new AlertDialog.Builder(EditTextActivity.this); // 创建对话框builder.setTitle("提示信息").setMessage("用户名:" + n + "\n密码:" + p).setPositiveButton("知道了", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {password.setText("");//清空密码}}).show(); // 设置对话框属性并显示}});}}

4.CheckBox


多选框,在main.xml中定义如下:

 <CheckBox        android:id="@+id/shanghai"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="" />

onCheckedChangeListener监听器是专门对CheckBox进行监听,实现方法:public void onCheckedChanged(CompundButton buttonView,boolean isChecked);

代码示例:实现上海、北京、天津的复选框

main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="城市:" />    <CheckBox        android:id="@+id/shanghai"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="上海" />    <CheckBox        android:id="@+id/beijing"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="北京" />    <CheckBox        android:id="@+id/tianjing"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="天津" /></LinearLayout>

CheckBoxActivity.java

package org.xiazdong;import android.app.Activity;import android.os.Bundle;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.Toast;public class CheckBoxActivity extends Activity implementsOnCheckedChangeListener {private CheckBox cb1, cb2, cb3;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);cb1 = (CheckBox) findViewById(R.id.shanghai);cb2 = (CheckBox) findViewById(R.id.beijing);cb3 = (CheckBox) findViewById(R.id.tianjing);cb1.setOnCheckedChangeListener(this);cb2.setOnCheckedChangeListener(this);cb3.setOnCheckedChangeListener(this);}@Overridepublic void onCheckedChanged(CompoundButton buttonView,   //buttonView表示改变的框,isChecked表示是选中还是取消选中boolean isChecked) {if(buttonView==cb1||buttonView==cb2||buttonView==cb3){if(isChecked){Toast.makeText(this, buttonView.getText()+"被选中",Toast.LENGTH_SHORT).show();}else{Toast.makeText(this, buttonView.getText()+"取消选中",Toast.LENGTH_SHORT).show();}}}}

5.RadioButton


单选框,在main.xml中定义如下:

<RadioGroup> <RadioButton            android:id="@+id/rb1"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:text="RadioButton1" ></RadioButton><RadioButton></RadioButton>......</RadioGroup>

在单选框中也存在一个OnCheckedChangeListener,但是不同于多选框的监听器,虽然名字一样,但是所在包不一样。

代码示例:实现“男、女”单选框;

main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <RadioGroup        android:id="@+id/rg1"        android:layout_width="fill_parent"        android:layout_height="wrap_content" >        <RadioButton            android:id="@+id/rb1"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:text="男" >        </RadioButton>        <RadioButton            android:id="@+id/rb2"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:text="女" >        </RadioButton>    </RadioGroup></LinearLayout>

RadioButtonActivity.java

package org.xiazdong;import android.app.Activity;import android.os.Bundle;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.Toast;import android.widget.RadioGroup.OnCheckedChangeListener;public class RadioButtonActivity extends Activity implements OnCheckedChangeListener{    /** Called when the activity is first created. */private RadioButton rb1,rb2;private RadioGroup rg;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        rb1 = (RadioButton)findViewById(R.id.rb1);        rb2 = (RadioButton)findViewById(R.id.rb2);        rg = (RadioGroup)findViewById(R.id.rg1);        rg.setOnCheckedChangeListener(this);    }@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {if(group==rg){if(rb1.getId()==checkedId){Toast.makeText(this, rb1.getText(), Toast.LENGTH_SHORT).show();}if(rb2.getId()==checkedId){Toast.makeText(this, rb2.getText(), Toast.LENGTH_SHORT).show();}}}}


6.ProgressBar


进度条,在main.xml中定义如下:

<ProgressBar        android:id="@+id/pb1"        style="?android:attr/progressBarStyleXxx"    <!--设置进度条的样式,有大、中、小、条状 -->        android:layout_width="wrap_content"        android:layout_height="wrap_content" />

1. ?andtroid:attr/progressBarStyleSmall圆形小进度条,动态
2. 默认,即不设置 圆形中等进度条,动态
3. ?android:attr/progressBarStyleLarge 圆形大进度条,动态
4. ?android:attr/progressBarStyleHorizontal 条状进度条,静态

条状进度条属性:


android:max
android:progress
android:secondaryProgress

代码示例:实现条状进度条,并当安装结束时,跳出提示


main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <ProgressBar        android:id="@+id/pb4"        style="?android:attr/progressBarStyleHorizontal"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:max="100"        android:progress="0"        android:secondaryProgress="0" /></LinearLayout>

ProgressBarActivity.java

package org.xiazdong;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.widget.ProgressBar;import android.widget.Toast;public class ProgressBarActivity extends Activity implements Runnable {private ProgressBar bar;private boolean isFinished;Thread t;Handler handler = new Handler();@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);bar = (ProgressBar) findViewById(R.id.pb4);t = new Thread(this);t.start();}public void showToast() {handler.post(new Runnable() {@Overridepublic void run() {Toast.makeText(getApplicationContext(), "安装完成!",//此处需要使用Handler,因为不能在子线程中使用ToastToast.LENGTH_SHORT).show();}});}public void run() {int current = bar.getProgress();int currentMax = bar.getMax();int secCurrent = bar.getSecondaryProgress();while (true) {bar.setProgress(current++);bar.setSecondaryProgress(secCurrent++);if (secCurrent >= currentMax) {break;}try {Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}}isFinished = true;showToast();}}

7.TextView

文本显示组件,在main.xml中定义如下:


 <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello" />    <!--文本文字 -->

8.Dialog


对话框,不需要再main.xml中显示,只需要直接在Activity中创建即可;

(1)简单的Dialog:

常用函数: setMessage() setTitle() setIcon() setPositiveButton() setNegativeButton()
Builder builder = new Builder(DialogActivity.this);   //创建对话框builder.setIcon(android.R.drawable.ic_dialog_info).setTitle("对话框标题");   //设置对话框图标和标题builder.setMessage("对话框内容");    //设置对话框信息builder.setPositiveButton("Yes", new OnClickListener(){      //设置正确按钮@Overridepublic void onClick(DialogInterface dialog, int arg1) {}});builder.setNegativeButton("No", new OnClickListener(){     //设置否定按钮@Overridepublic void onClick(DialogInterface dialog, int arg1) {}});builder.show();     //显示对话框

(2)在dialog中添加单选框和复选框:

实例:添加“上海、北京、天津”的多选框

setMultiChoiceItems(); setSingleChoiceItems(); 注:设置这些和setMessage不能同时使用!
package org.xiazdong;import android.app.Activity;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import android.content.DialogInterface.OnMultiChoiceClickListener;import android.os.Bundle;public class DialogActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Builder builder = new Builder(DialogActivity.this);builder.setMultiChoiceItems(new String[] { "上海", "北京", "天津" },   //每项内容new boolean[] { true, false, true },    //每项是否没选中new OnMultiChoiceClickListener() {    //监听器@Overridepublic void onClick(DialogInterface dialog, int which,boolean isChecked) {}}).show();}}
                                                                    (3)在dialog中添加列表                                                                                builder.setItems(new String[]{"项1","项2"},new OnClickListener(){});                                                                                 (4)在dialog中添加视图(在main.xml中定义):                                                    setView函数实现;
        Builder builder = new Builder(DialogActivity.this);        View layout = LayoutInflater.from(this).inflate(R.layout.main, null);        builder.setIcon(android.R.drawable.ic_dialog_info).setTitle("对话框标题");        builder.setMessage("对话框内容");        builder.setPositiveButton("Yes", new OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int arg1) {}        });        builder.setNegativeButton("Yes", new OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int arg1) {}        });        builder.setView(layout);        builder.show();

9.TabHost


分页组件,类似于如下图:



在main.xml中无需定义,直接在TabActivity中创建即可,但是TabSpec中的具体内容需要自定义,即引用布局文件中的ID;
注:
(1)Activity需要继承TabActivity 而不是Activity;
(2)OnTabChangedListener为TabHost的监听器,存在方法:public void onTagChanged(String tabId);

(3)TabSpec t1 = tabHost.newTabSpec("TabID"); (4)t1.setContent(布局或控件id); //为tabSpec添加某个布局 (5)t1.setIndicator(tab的标题);

代码示例:设置三页,每页有各自的内容

main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/main"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <LinearLayout        android:id="@+id/l1"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="vertical" >        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="第1页"></TextView>    </LinearLayout>    <LinearLayout        android:id="@+id/l2"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="vertical" >        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="第2页"></TextView>    </LinearLayout>    <LinearLayout        android:id="@+id/l3"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="vertical" >        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="第3页"></TextView>    </LinearLayout></LinearLayout>

TabHostActivity.java

package org.xiazdong;import android.app.TabActivity;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.widget.TabHost;import android.widget.TabHost.OnTabChangeListener;import android.widget.TabHost.TabSpec;import android.widget.Toast;public class TabHostActivity extends TabActivity implements OnTabChangeListener {   //继承TabActivity而不是ActivityTabHost host;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);host = this.getTabHost();    //新建TabHostLayoutInflater.from(this).inflate(R.layout.main,    //将main布局文件映射成tabHost的viewhost.getTabContentView());TabSpec t1 = host.newTabSpec("t1");   //新建一个页,id为t1t1.setIndicator("标签1");  //设置显示页名t1.setContent(R.id.l1);    //设置页的内容为l1布局,此处可以是布局或组件host.addTab(t1);     //加入TabHost中TabSpec t2 = host.newTabSpec("t2");t2.setIndicator("标签2",getResources().getDrawable(R.drawable.ic_launcher));t2.setContent(R.id.l2);host.addTab(t2);TabSpec t3 = host.newTabSpec("t3");t3.setIndicator("标签3");t3.setContent(R.id.l3);host.addTab(t3);host.setOnTabChangedListener(this);   //设置监听器}@Overridepublic void onTabChanged(String tabId) {Log.v("a","aaaa");if(tabId.equals("t1")){Toast.makeText(this, "标签1ing", Toast.LENGTH_LONG).show();}if(tabId.equals("t2")){Toast.makeText(this, "标签2ing", Toast.LENGTH_LONG).show();}if(tabId.equals("t3")){Toast.makeText(this, "标签3ing", Toast.LENGTH_LONG).show();}else{Toast.makeText(this, tabId, Toast.LENGTH_LONG).show();}}}

10.SeekBar


拖动条,在main.xml中定义如下:
<SeekBar android:id="@+id/sb"android:layout_width="fill_parent"android:layout_height="wrap_content"/>

注:存在OnSeekBarChangeListener监听器,用来监听SeekBar组件的事件,实现方法:
(1)public void onStartTrackingTouch(SeekBar seekBar); //开始移动时调用
(2)public void onStopTrackingTouch(SeekBar seekbar); //结束移动时调用
(3)public void onProgressChanged(SeekBar seekBar,int progress,boolean fromUser); //改变时调用,progress为当前值

代码示例:移动SeekBar组件,并在TextView中显示当前值

main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="@string/hello"        android:id="@+id/tv"         /><SeekBar     android:id="@+id/sb"    android:layout_width="fill_parent"    android:layout_height="wrap_content"        /></LinearLayout>

SeekBarActivity.java

package org.xiazdong;import android.app.Activity;import android.os.Bundle;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.TextView;public class SeekBarActivity extends Activity {private TextView tv;private SeekBar sb;@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        tv = (TextView) findViewById(R.id.tv);        sb = (SeekBar) findViewById(R.id.sb);        sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {tv.setText(progress+"");}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {}        });    }}
                                                                                                        

11.ListView

列表视图;

(1)使用ArrayAdapter实现普通列表

ArrayAdapter是一个媒介,通过它可以把数组映射到ListView视图上。 (1)new ArrayAapter<String>(this,android.R.layout.simple_list_item_1,list); 将list存放到ArrayAdapter中; (2)lv.setAdapter(adapter); 为listView设置Adapter;
package org.xiazdong;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;public class ListViewActivity extends Activity implements OnItemClickListener{ArrayList<String> list;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        list = new ArrayList<String>();        list.add("xiazdong-1");        list.add("xiazdong-2");        list.add("xiazdong-3");        ArrayAdapter adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);        ListView lv = new ListView(this);        lv.setAdapter(adapter);        lv.setOnItemClickListener(this);        this.setContentView(lv);    }@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {Toast.makeText(this,list.get(arg2), Toast.LENGTH_SHORT).show();}}

(2)自定义适配器BaseAdapter



二、4种布局介绍


AbsoluteLayout因为已被废除,因此不做介绍;
只要存在界面,就会有布局的存在,就像Swing,虽然一个是桌面应用,一个是手机应用,但是他们都差不多。

Android入门(2) 基本控件介绍、4种布局_第1张图片


此处因为布局非常简单,所以就不用代码来讲解了。


1.LinearLayout



默认布局。组件的排列按照预先定义方向很有序的排列,类似于Swing中的FlowLayout;
注意点:
(1)可以在<LinearLayout>中添加android:orientation:vertical/horizontal ; (2)可以嵌套<LinearLayout>;

2.FrameLayout


每个组件都在左上角,如果多个组件一起出现,则会重叠;

3.RelativeLayout


每个组件定位都是按照与其他组件的上下、左右定位;
默认的定位为左上方;
(1)定位与组件的上下左右
android:layout_below="@id/.." android:layout_above="@id/" android:layout_toLeftOf="@id/" android:layout_toRightOf="@id/" (2)定位与组件的边缘对齐 android:layout_alignLeft="@id/" android:layout_alignRight="@id/" android:layout_alignTop="@id/" android:layout_alignBottom="@id/" (3)定位与父组件的边缘对齐 android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" (4)与整个屏幕的关系 android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_centerInParent="true"

4.TableLayout


类似于Swing中的GridLayout;
表格布局的每行用<TabRow>括起来; 在<TableLayout>中可以定义如下属性:
(1)android:shrinkColumns="1" 表明第2个控件如果里面的内容过多,会收缩,扩展到第二行,而不是延伸; (2)android:stretchColumns="2" 如果有空白,第3个控件填充;
在控件中设置:
(1)android:layout_column="2" 将此控件放在第3个位置; (2)android:layout_span="2" 此控件占据2个单元位置;

补充:


1.在Activity中根据id获得strings.xml和main.xml中的内容


getResources().getString(int id);
getResources().getDrawable(int id);


2.锁定横竖屏


因为在CTRL+F11时 会发生问题,因此可以再AndroidManifest.xml的Activity设置:android:screenOrientation=""

(1)portrait:竖屏;
(2)landscape:横屏;

3.可视化设置布局、控件

main.xml 如下所示:
Android入门(2) 基本控件介绍、4种布局_第2张图片

多个Activity之间跳转


使用Intent进行多个页面的跳转; (1)Intent intent = new Intent(Context c,Class class); c表示当前界面,class表示要跳转到的界面的class; (2)intent.putExtra(String key,String value); //设置传输内容; (3)this.startActivity(intent); //开始跳转 (4)Intent intent = this.getIntent(); //获得传输来的intent (5)String value = intent.getStringExtra(String key); //获得数据

代码示例:


main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="第一个界面" />        <TextView       android:id="@+id/tv1"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="" /><EditText     android:id="@+id/e1"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:hint="输入信息"    /><Button     android:id="@+id/b1"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="发送到第二个界面"    /></LinearLayout>

mylayout.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="第二个界面" />        <TextView       android:id="@+id/tv2"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="" /><EditText     android:id="@+id/e2"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:hint="输入信息"    /><Button     android:id="@+id/b2"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="发送到第一个界面"    /></LinearLayout>

MultiActivityActivity.java
package org.xiazdong;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MultiActivityActivity extends Activity implements OnClickListener{private Button b1;private EditText e1;private TextView tv1;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        b1 = (Button)findViewById(R.id.b1);        e1 = (EditText)findViewById(R.id.e1);        tv1 = (TextView)findViewById(R.id.tv1);        Intent i = this.getIntent();if(i.getStringExtra("2")!=null){tv1.setText(i.getStringExtra("2"));}        b1.setOnClickListener(this);    }@Overridepublic void onClick(View v) {Intent intent = new Intent(MultiActivityActivity.this,OtherActivity.class);intent.putExtra("1", e1.getText().toString());this.startActivity(intent);}}

OtherActivity.java

package org.xiazdong;import android.app.Activity;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class OtherActivity extends Activity implements OnClickListener{private TextView view ;private Button b2;private EditText e2;private TextView tv2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);view = new TextView(this);setContentView(R.layout.mylayout);b2 = (Button)findViewById(R.id.b2);        e2 = (EditText)findViewById(R.id.e2);        tv2 = (TextView)findViewById(R.id.tv2);        Intent i = this.getIntent();if(i.getStringExtra("1")!=null){tv2.setText(i.getStringExtra("1"));}b2.setOnClickListener(this);}@Overridepublic void onClick(View v) {Intent intent = new Intent(OtherActivity.this,MultiActivityActivity.class);intent.putExtra("2", e2.getText().toString());this.startActivity(intent);}}



   

更多相关文章

  1. android 对话框AlertDialog
  2. android弹出对话框大全
  3. 【小超_Android】2015最流行的android组件、工具、框架大全(后续)
  4. Android应用程序组件Content Provider在应用程序之间共享数据的
  5. Android中的BatteryService及相关组件
  6. Android 开源组件和第三方库汇总
  7. Android应用程序组件Content Provider的启动过程源代码分析(2)

随机推荐

  1. android 打包错误
  2. Android Packaging Problem
  3. Android时间获取与使用
  4. Android(安卓)gallery实现图片的左右循环
  5. 设置android的布局文件的背景颜色为黑色
  6. Android集成华为、小米、OPPO、VIVO、极
  7. Android自制浏览器WebView-android学习之
  8. android tv 实现全屏画竖线
  9. android好博客
  10. android 去掉顶部状态栏及全屏