当前位置: 代码迷 >> Android >> Android学习05-Android中的基本控件(下)
  详细解决方案

Android学习05-Android中的基本控件(下)

热度:51   发布时间:2016-05-01 13:42:46.0
Android学习05-----Android中的基本控件(上)

?

Android操作系统中,除了所有的显示组件之外,还需要进行布局管理器及事件的处理。

这里先介绍基本组件的使用形式进行一个总结。而更加复杂的组件在后面总结玩布局管理器和事件处理之后再来总结。

总结内容:

1、了解View组件的主要作用;

2、了解常用组件名称及继承关系;

Android中的View组件包含了几乎所有的图形显示组件,如ButtonTextView都是View的子类。大家在Android.widget包中基本上有多少个类,就有对应了多少种组件。

一、TextView(文本显示组件)

继承关系

java.lang.Object   ? 	android.view.View  	   ? 	android.widget.TextView

res/layout/textview.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:id="@+id/textViewId"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:textColor="#FFFF00"        android:textSize="20px"        android:layout_margin="30px"        android:text="@string/hello" />	<!-- 注意这里的文字大小必须有大小单位 -->	<!-- 这里margin和Css一致 -->		<TextView         android:id="@+id/textViewId2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"		android:background="@drawable/james"		android:textColor="#000000"		android:textStyle="bold"        android:text="图片背景文字内容" />	<!-- 注意这里的资源名称必须为[a-z0-9_.] -->		<TextView         android:id="@+id/textViewId3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:autoLink="all"		android:textColor="#FFFF00"		android:textSize="25px"        android:text="博客地址:www.xdwangiflytek.iteye.com" />	<!-- android:autoLink="all"如果是网址信息,可以将其变为链接 -->	<!-- 注意这里需要是英文冒号 -->		<!-- 			通过上面的Demo我们可以发现如果一个项目中定义了多个文本组件,那么这可能会存在着许多		重复的配置属性,这样的话对于开发维护就很麻烦,所以在Android操作系统中也可以使用样式表文		件进行统一的属性配置,样式表定义与values中的string.xml一致,且文件必须在valuse文		件夹之中	 -->	 <TextView         android:id="@+id/textViewId4"        style="@style/msg_style"        android:text="@string/hello" />		<!-- style定义组件显示的样式风格 -->		</LinearLayout>

res/layout/ textview_style.xml

<?xml version="1.0" encoding="utf-8"?><resources>    <!-- 定义样式表的配置,其中 “msg_style”为名称-->	<style name="msg_style">	    <item name="android:textSize">25px</item>	    <item name="android:textColor">#FFFF00</item>	    <item name="android:autoLink">all</item>	    <item name="android:layout_width">fill_parent</item>	    <item name="android:layout_height">wrap_content</item>	</style></resources>

?

二、Button(按钮组件)

继承关系

java.lang.Object   ? 	android.view.View  	   ? 	android.widget.TextView  	  	   ? 	android.widget.Button

通过API发现Button是TextView的子类,所有按钮可以理解为一个特殊的文本显示组件,而按钮主要是完成某些事件功能的,这里主要先总结一下按钮的基本配置。

res/layout/button.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" >    <Button         android:id="@+id/buttonId"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:textColor="#FFFF00"        android:textSize="14px"        android:layout_margin="30px"        android:text="@string/user"/></LinearLayout>

?

?

三、EditText(编辑框组件)

继承关系

java.lang.Object   ? 	android.view.View  	   ? 	android.widget.TextView  	  	   ? 	android.widget.EditText

res/layout/edittext.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" >    <EditText         android:id="@+id/editId"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="@string/user"        android:selectAllOnFocus="true"/>	<!-- android:selectAllOnFocus被默认全选 -->		<EditText         android:id="@+id/editId2"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="@string/user"        android:enabled="false"/>     <!-- 不可编辑 -->         <EditText         android:id="@+id/editId3"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="@string/user"        android:password="true"/>     <!-- 采用密码形式进行数据回显,此时是密文 -->         <EditText         android:id="@+id/editId3"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:numeric="integer"/>     <!-- 数字输入 --></LinearLayout>

?

四、RadioGroupRadioButton(单选按钮组件)

RadioGroup继承关系

java.lang.Object   ? 	android.view.View  	   ? 	android.view.ViewGroup  	  	   ? 	android.widget.LinearLayout  	  	  	   ? 	android.widget.RadioGroup

RadioGroup类的常用方法

No.

方法

描述

1

Public void check(int id)

设置要选中的单选按钮编号

2

Public void clearCheck()

清空选中状态

3

Public int getCheckedRadioButtonId()

取得选中按钮的RadioButtonID

4

setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener listener)

设置单选按钮选中的操作事件

?

对于很多的语言,单选按钮直接定义即可,但是在Android中,RadioGroup定义的只是一个单选按钮的容器,在这个容器之中要加入多个单选项,而这个单选项就是RadioButton

RadioButton继承关系

java.lang.Object   ? 	android.view.View  	   ? 	android.widget.TextView  	  	   ? 	android.widget.Button  	  	  	   ? 	android.widget.CompoundButton  	  	  	  	   ? 	android.widget.RadioButton

?

res/layout/ radiogroup.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:id="@+id/txId"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:textSize="20px"        android:text="请选择语言:" />      <RadioGroup        android:id="@+id/rgId"       android:layout_width="fill_parent"       android:layout_height="wrap_content"       android:orientation="vertical"       android:checkedButton="@+id/rbCNId">       <!--vertical:垂直 android:checkedButton表示默认选中的单选 -->       <RadioButton            android:id="@+id/rbCNId"           android:text="中文"/>       <RadioButton            android:id="@+id/rbENId"           android:text="英文"/>   </RadioGroup>             <TextView         android:id="@+id/txId2"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:textSize="20px"        android:text="性别:" />      <RadioGroup        android:id="@+id/rgId2"       android:layout_width="fill_parent"       android:layout_height="wrap_content"       android:orientation="horizontal"       android:checkedButton="@+id/rbManId">       <RadioButton            android:id="@+id/rbManId"           android:text="男"/>       <RadioButton            android:id="@+id/rbWomanId"           android:text="女"/>   </RadioGroup></LinearLayout>

?

五、CheckBox(复选框组件)

继承关系

java.lang.Object   ? 	android.view.View  	   ? 	android.widget.TextView  	  	   ? 	android.widget.Button  	  	  	   ? 	android.widget.CompoundButton  	  	  	  	   ? 	android.widget.CheckBox

res/layout/ checkbox.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:id="@+id/tvId"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="爱好:" />       <CheckBox            android:id="@+id/cbId"           android:layout_width="fill_parent"           android:layout_height="wrap_content"           android:text="上网"/>            <CheckBox            android:id="@+id/cbId2"           android:layout_width="fill_parent"           android:layout_height="wrap_content"           android:text="看书"/>           <CheckBox            android:id="@+id/cbId3"           android:layout_width="fill_parent"           android:layout_height="wrap_content"/>       </LinearLayout>

Activity

package com.iflytek.ViewDemo;import android.app.Activity;import android.os.Bundle;import android.widget.CheckBox;public class ViewProjectActivity extends Activity {		private CheckBox checkBox;		@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.checkbox);		this.checkBox=(CheckBox)super.findViewById(R.id.cbId3);		this.checkBox.setChecked(true);		this.checkBox.setText("唱歌");	}}

?

?

六、Spinner(下拉列表框组件)

继承关系

java.lang.Object   ? 	android.view.View  	   ? 	android.view.ViewGroup  	  	   ? 	android.widget.AdapterView<T extends android.widget.Adapter>  	  	  	   ? 	android.widget.AbsSpinner  	  	  	  	   ? 	android.widget.Spinner

Spinner类常用方法

No.

方法

描述

1

public CharSequence getPrompt()

取得提示文字

2

public void setPrompt(CharSequence prompt)

设置组件的提示文字

3

public void setAdapter(SpinnerAdapter adapter)

设置下拉列表项

4

public void setOnItemClickListener(AdapterView.OnItemClickListener l)

设置选项单击事件

?

SpinnerAdapter的功能就是一个适配器,会将所需要的数据进行包装并放在Spinner之中。
在Android中,可以直接在配置文件中定义<Spinner>节点,但是在定义此元素的时候却不能直接设置其显示的列表项,其配置方式有两种:
1、直接通过资源文件配置;
2、通过android.widget.ArrayAdapter类读取资源文件或者是指定具体设置的数据;

法一,直接通过资源文件配置:
对于Spinner的内容可以直接在Values文件夹之中定义若干个资源文件,例如定义一个城市下拉选项city_spinner_data.xml
res/ values/ city_spinner_data.xml:

<?xml version="1.0" encoding="utf-8"?><resources>	<string-array name="city_data">	    <item>安徽</item>	    <item>江苏</item>	    <item>北京</item>	</string-array></resources>

res/layout/ spinner.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:id="@+id/tvId"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="请选择喜欢的城市" />	    <Spinner         android:id="@+id/spinnerId"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:prompt="@string/city_prompt"        android:entries="@array/city_data"/>    <!-- android:entries配置所有下拉列表框中的显示内容 -->    <!-- android:prompt提示信息 -->    </LinearLayout>

法二,通过android.widget.ArrayAdapter类:
A、配置文件读取方式:
通过ArrayAdapter类中进行读取res/layout/ spinner.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:id="@+id/tvId"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="请选择喜欢的城市" />	    <Spinner         android:id="@+id/spinnerId2"        android:layout_width="fill_parent"        android:layout_height="wrap_content"/></LinearLayout>

Activity:

package com.iflytek.ViewDemo;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.Spinner;public class ViewProjectActivity extends Activity {	private Spinner spinner;	private ArrayAdapter<CharSequence> arrayAdapter = null;	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.spinner);		this.spinner = (Spinner) super.findViewById(R.id.spinnerId2);		this.spinner.setPrompt("请选择您喜欢的城市");		this.arrayAdapter = ArrayAdapter.createFromResource(this,				R.array.city_data, android.R.layout.simple_spinner_item);		this.arrayAdapter				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);// 换下拉框风格		this.spinner.setAdapter(arrayAdapter);// 设置显示信息	}}

B、指定具体设置的数据方式:
此时不需要任何的资源文件,都是通过程序代码生成的列表内容
res/layout/ spinner.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:id="@+id/tvId"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="请选择喜欢的城市" />	    <Spinner         android:id="@+id/spinnerId3"        android:layout_width="fill_parent"        android:layout_height="wrap_content"/>       </LinearLayout>

Activity

package com.iflytek.ViewDemo;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.Spinner;public class ViewProjectActivity extends Activity {	private Spinner spinner;	private ArrayAdapter<CharSequence> arrayAdapter = null;	private List<CharSequence> datas = null;//定义一个集合数据	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);				//通过ArrayAdapter读取配置文件的方式		setContentView(R.layout.spinner);		this.datas = new ArrayList<CharSequence>();		this.datas.add("北京");		this.datas.add("安徽");		this.datas.add("江苏");		this.spinner = (Spinner) super.findViewById(R.id.spinnerId3);		this.arrayAdapter = new ArrayAdapter(this,				 android.R.layout.simple_spinner_item,this.datas);		this.arrayAdapter				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);// 换下拉框风格		this.spinner.setAdapter(arrayAdapter);// 设置显示信息		}}

?

?

?

七、ImageView(图片视图组件)

继承关系

java.lang.Object   ? 	android.view.View  	   ? 	android.widget.ImageView

res/layout/ imageview.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" >    <ImageView         android:id="@+id/imageViewId"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:src="@drawable/james"/>    <!-- 需要注意的是ImageView中的所有图片需要保存在drawable文件夹之中 -->    </LinearLayout>

?

?

八、ImageButton(图片按钮组件)

继承关系

java.lang.Object   ? 	android.view.View  	   ? 	android.widget.ImageView  	  	   ? 	android.widget.ImageButton

res/layout/ imagebutton.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" >    <ImageButton         android:id="@+id/imagebtnId"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/ic_launcher"/></LinearLayout>

?

九、TimePicker(时间选择器组件)

继承关系

java.lang.Object   ? 	android.view.View  	   ? 	android.view.ViewGroup  	  	   ? 	android.widget.FrameLayout  	  	  	   ? 	android.widget.TimePicker

res/layout/ timepicker.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" >    <TimePicker        android:id="@+id/tpId"        android:layout_width="fill_parent"        android:layout_height="wrap_content"/></LinearLayout>

?

十、DatePicker(日期选择器组件)

继承关系

?

java.lang.Object   ? 	android.view.View  	   ? 	android.view.ViewGroup  	  	   ? 	android.widget.FrameLayout  	  	  	   ? 	android.widget.DatePicker

?

res/layout/ datepicker.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" >    <DatePicker        android:id="@+id/dpId"        android:layout_width="fill_parent"        android:layout_height="wrap_content"/></LinearLayout>

?

?

?

?

?

?

  相关解决方案