`

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

阅读更多

 

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

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

总结内容:

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

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

Android 中的 View 组件包含了几乎所有的图形显示组件,如 Button TextView 都是 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>

 

四、 RadioGroup RadioButton (单选按钮组件)

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()

取得选中按钮的 RadioButton ID

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>

 

 

 

 

 

 

分享到:
评论

相关推荐

    Android自定义控件---联系人列表A-Z排序

    在Android开发中,自定义控件是提升应用用户体验和界面独特性的重要手段。本文将深入探讨如何创建一个自定义的联系人列表,并实现A-Z字母排序功能。首先,我们需要理解Android系统的视图(View)和视图组(ViewGroup)...

    Android代码-Android_Learning_Notes

    5、Android05--Android服务通信 6、Android06--Android广播接收器 7、Android07--Android日志系统 8、Android08--Android权限系统 用户界面 9、Android09--Fragment初探 10、Android09--Android程序界面 11、...

    Android-TrapezoidPartsView-梯形控件

    在Android开发中,有时我们需要创建一些独特形状的视图,以实现特定的界面设计或交互效果。...通过研究其源码,我们可以学习到如何在Android中实现自定义视图的绘制和事件监听,进一步提升我们的Android开发技能。

    android-support-v7-appcompat

    `appcompat-v7`库的使用方法通常是将其导入到项目中,然后将Activity继承自`AppCompatActivity`,并使用`android.support.v7.widget`包下的控件来替代原生的Android控件,这样就能在所有支持的Android版本上享受到新...

    android-support-v4.jar最新版

    总之,`android-support-v4.jar`是Android开发中不可或缺的一部分,它为开发者提供了广泛的API兼容性和功能扩展,确保了应用程序能够在广泛的不同Android设备上运行。理解并有效利用这个库,可以帮助开发者创建更...

    android-times-square日历控件

    《Android Times-Square:打造出色的日历控件》 在移动应用开发中,日历控件是不可或缺的一部分,它能够帮助用户方便地选择日期,进行时间管理。Square公司开源的`android-times-square`库,正是为Android平台量身...

    android学习文档--控件1.pptx

    以上介绍了Android UI中常用的几种基本控件及其使用方法。这些控件是构建用户界面的基础,熟练掌握它们的使用可以帮助开发者快速搭建出美观实用的应用界面。希望本文能为初学者提供一定的帮助。

    Android聊天控件Android-Chat-Widget.zip

    Android-Chat-Widget 是像微信、WhatsApp、Line一样的聊天控件。 Demo 如何使用? 1.在Layout中  android:id="@ id/messageInputToolBox"  android:layout_width="match_parent"  ...

    Android-PullToRefresh-master

    在Android平台上,ListView是一种常用的控件,用于显示大量的列表数据。然而,为了使应用更加生动、交互性更强,开发者通常会引入“拉动刷新”功能,让用户在滚动到列表顶部时能够手动触发新数据的加载。"Android-...

    android学习文档--控件2.pptx

    综上所述,`ImageView`、`DatePicker` 和 `TimePicker` 是 Android 应用开发中经常使用的控件。通过合理利用这些控件,开发者可以轻松地为应用增添丰富的交互功能。同时,熟练掌握这些控件的基本用法和高级特性对于...

    android支持包:android-support-v4

    `android-support-v4`库常常与AppCompat库一起使用,后者提供了对Android Material Design的支持,包括主题、颜色、控件样式等,即使在旧版本的Android系统上也能提供一致的用户体验。AppCompat库还包含一个兼容的...

    android-support-v7-appcompat.zip

    它还提供了自定义视图和控件的工具,比如`android.support.v7.widget.CardView`和`android.support.v7.widget.RecyclerView`,这些都在早期版本的Android上提供原生支持。 总之,`android-support-v7-appcompat`是...

    Android-Android自定义控件-签到日历

    本文将详细解析"Android-Android自定义控件-签到日历"这一主题,以及如何根据提供的源码进行修改以适应特定项目。 首先,签到日历控件通常用于健康管理、学习跟踪或者日常任务管理类应用,让用户能够直观地查看和...

    Android---UI篇

    •Android---UI篇---Tab Layout(选项卡布局) • •Andorid---UI篇---TableLayout(表格布局) • •Android---UI篇---RelativeLayout(相对布局) • •Android---UI篇---GridView(网格布局) • •Android---UI篇-...

    android-support-v7-appcompat.jar android-support-v4.jar

    在Android开发中,`android-support-v7-appcompat.jar` 和 `android-support-v4.jar` 是两个非常重要的库文件,它们提供了对旧版本Android系统的重要支持和功能扩展。 首先,`android-support-v7-appcompat.jar` 是...

    android-collapse-calendar-view-Android.zip

    在Android开发中,UI设计和用户体验是至关重要的因素之一,特别是在构建日历应用时。"android-collapse-...对于任何希望提升其Android应用界面交互体验的开发者来说,理解和使用这个控件都将是一次宝贵的学习经历。

    Android--粘性控件

    在Android开发中,自定义控件是提升用户体验和界面独特性的重要手段。"Android--粘性控件"这个主题,通常指的是实现一种特殊效果的组件,这种组件可以在用户滚动列表时保持在屏幕顶部,直到其他内容覆盖它或者到达其...

    android-support-v4.jar android-support-v7.jar

    在Android开发中,`android-support-v4.jar`和`android-support-v7.jar`是两个非常重要的库文件,它们属于Google的Android Support Library。这个库是为了兼容Android的不同版本而设计的,尤其是在处理旧版本API时,...

Global site tag (gtag.js) - Google Analytics