PS:Android的控件真的是很多...现在还在忙到控件...也是神了....

学习内容:

1.Spinner下拉菜单...

2.AutoComplete TextView自动完成文本框...

1.Spinner下拉菜单....

  下拉菜单,这个是非常熟悉的...这个大部分应用基本是有的...比较常用,相对而言,挺简单的,就是有些地方不那么容易理解而已...Spinner这个东西需要使用到适配器...那什么是适配器呢?到底是干什么用的呢?就是将我们保存的数据更好的显示在View上...这就是适配器的基本作用...这样说有可能有点抽象...上个代码....这里我们先在xml文件中定义一个类似于数组的一个东西来保存数据...这里的数据信息就代表下拉菜单将要显示的数据...

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">下拉菜单...</string>
<string name="action_settings">...</string>
<string name="color">选择颜色:</string>
<string-array name="colors">
<item>red</item>
<item>blue</item>
<item>green</item>
<item>white</item>
</string-array>
</resources>

布局文件基本没什么东西,直接在布局的文件中加入一个下拉菜单控件就行了...

  <TextView
android:id="@+id/color"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/color"/>
<Spinner
android:id="@+id/spinner"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:prompt="@string/color"/>
<!--prompt表示的是在初始情况下显示的文本...-->

这里最主要的还是java文件...这个java文件给我的感觉才是最坑人的...有一些东西很不容易理解...比如说ArrayAdapter这是个数组适配器,这个数组适配器的目的就是为了保存我们的数据资源..

package com.example.andorid_radio;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Spinner;
import android.widget.ArrayAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
Spinner sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sp=(Spinner)findViewById(R.id.spinner);
//创建一个数组适配器...这个适配器将保存实例的资源信息和id信息...以及列表显示的风格... /* public static ArrayAdapter<CharSequence> 字符集合 createFromResource(Context context,
* int textArrayResId, int textViewResId) { 传递的是当前这个资源文件的TextView中的id信息并读取资源文件里的数据生成适配器...
* CharSequence[] strings = context.getResources().getTextArray(textArrayResId);//获取数据源在数组内的标识符..说白了就是string.xml文件里的数据...
* return new ArrayAdapter<CharSequence>(context, textViewResId, strings);//返回一个字符集类型的适配器..textViewResId表示的是布局文件里控件的id信息..
* }
* 上面这个东西是createFromResource的源码..内容很清楚...
* 下面函数的三个参数this表示当前Activity,R.array.colors表示的是string.xml文件里的string-array...
* android.R.id.layout.simple_spinner_item..表示布局文件里的下拉列表...
* */ ArrayAdapter adapter=ArrayAdapter.createFromResource(this, R.array.colors, android.R.layout.simple_spinner_item);
//设置下拉时的效果...这里为系统默认的效果...
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//设置下拉列表选项里的内容信息为数组适配器内的数据信息...
sp.setAdapter(adapter);
//定义子元素选择监听器...
OnItemSelectedListener oisl=new OnItemSelectedListener() { @Override
/*这里解释一下这几个参数的含义...AdapterView<?> arg0这个表示的是下拉列表被选择..View arg1...表示哪个子元素被选择..
* arg2表示适配器内哪一个view被选择的定位... arg3表示哪一行被选择...
* arg0.getItemAtPosition(arg2).toString()表示下拉列表内的选项被选择的信息...被转化成字符串的形式显示出来...
* */
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
//用一个信息提示框来显示触发的信息...
Toast.makeText(MainActivity.this, arg0.getItemAtPosition(arg2).toString(), Toast.LENGTH_SHORT).show();
} @Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
};
//
sp.setOnItemSelectedListener(oisl);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

2.AutoCompleteTextView自动完成文本框...

  自动完成文本框与适配器捆绑在一起,这个控件的基本作用就是当我们在输入信息的时候,系统会根据适配器里的内容进行自动匹配显示...这个空间也是非常常用的...我们来看看它的作用...

<?xml version="1.0" encoding="utf-8"?>
<resources> <string name="app_name">下拉菜单...</string>
<string name="action_settings">...</string>
<string-array name="province">
<item>shan dong</item>
<item>jiang su</item>
<item>an hui</item>
<item>zhe jiang</item>
<item>fu jian</item>
<item>shang hai</item>
<item>guang dong</item>
<item>guang xi</item>
<item>hai nan</item>
<item>hu bei</item>
<item>hu nan</item>
<item>he nan</item>
<item>jiang xi</item>
<item>bei jing</item>
<item>tian jin</item>
<item>he bei</item>
<item>shan xi</item>
<item>nei meng gu</item>
<item>ning xia</item>
<item>xin jiang</item>
<item>qing hai</item>
<item>shan xi</item>
<item>gan su</item>
<item>si chuan</item>
<item>yun nan</item>
<item>gui zhou</item>
<item>xi zang</item>
<item>chong qing</item>
<item>liao ning</item>
<item>ji lin</item>
<item>hei long jiang</item>
<item>tai wan</item>
<item>xiang guang</item>
<item>ao men </item>
<item>山东</item>
<item>江苏</item>
<item>安徽</item>
<item>浙江</item>
<item>福建</item>
<item>上海</item>
<item>广东</item>
<item>广西</item>
<item>海南</item>
<item>湖北</item>
<item>湖南</item>
<item>河南</item>
<item>江西</item>
<item>北京</item>
<item>天津</item>
<item>河北</item>
<item>山西</item>
<item>内蒙古</item>
<item>宁夏</item>
<item>新疆</item>
<item>青海</item>
<item>陕西</item>
<item>甘肃</item>
<item>四川</item>
<item>云南</item>
<item>贵州</item>
<item>西藏</item>
<item>重庆</item>
<item>辽宁</item>
<item>吉林</item>
<item>黑龙江</item>
<item>台湾</item>
<item>香港</item>
<item>澳门</item>
</string-array>
</resources>

这个xml文件大家一看就懂,就是弄了一个string数组,里面来保存我们的数据信息...然后就是布局文件...

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="省份"/>
<!--这里completionThreshold="1"这句话表示的是我们输入几个字符时才给出提示,我这个就是输入一个字符就会给出提示...-->
<AutoCompleteTextView
android:id="@+id/AutoCompleteTextView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入省份..."
android:completionThreshold="1">
</AutoCompleteTextView>
</RelativeLayout>

  很简单的布局文件...因为不是什么成品的东西,所以涉及的东西就很少...前面已经说过AutoCompleteTextView是与适配器进行绑定的一个控件...因此必然少不了适配器的存在..接着我们看看java文件...

package com.example.andorid_radio;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String [] province=getResources().getStringArray(R.array.province);//目的是获取string.xml文件里的数据信息... //然后将我们获取的数据信息放入到新建的数组适配器当中...
ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,province); AutoCompleteTextView acv=(AutoCompleteTextView)findViewById(R.id.AutoCompleteTextView01); //将acv与适配器进行绑定...
acv.setAdapter(adapter);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

3.DatePicker控件...

  日期选择控件,其实就是一个修改日期时间的一个控件...这里放入一个文本显示控件用来显示信息,另一个按钮用来进行触发,当按钮被触发的时候会显示一个新的窗口来修改日期时间信息...

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/TextView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="请设置日期"/>
<Button
android:id="@+id/Button01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="设置日期和时间"/>
</RelativeLayout>

然后就是java文件...

package com.example.andorid_radio;

import java.util.Calendar;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.DatePicker;
import android.widget.Button;
import android.widget.TextView;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.view.View.OnClickListener;
import android.app.Dialog;
public class MainActivity extends Activity {
private int myear,mmonth,mday;
Button btn_1;
TextView dateDisplay;
static final int Date_Dialog_Id=0;
//当日期被设置的时候触发监听器...
private OnDateSetListener osl=new DatePickerDialog.OnDateSetListener(){ @Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
myear=year;
mmonth=monthOfYear;
mday=dayOfMonth;
dateDisplay.setText(myear+"-"+mmonth+"-"+mday);
} };
//重写方法...创建一个新的窗口然后返回...
@Override
protected Dialog onCreateDialog(int id){
switch(id){
case Date_Dialog_Id:{
//这里必须要传递这五个参数...
return new DatePickerDialog(this,osl,myear,mmonth,mday);
}
}
return null; }
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); final Calendar c=Calendar.getInstance();
myear=c.get(Calendar.YEAR);
mmonth=c.get(Calendar.MONTH);
mday=c.get(Calendar.DAY_OF_MONTH);
//按钮点击时被触发...
OnClickListener osl=new Button.OnClickListener(){ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//重写其内部的方法来显示窗口...
showDialog(Date_Dialog_Id);
} }; dateDisplay=(TextView)findViewById(R.id.TextView01);
btn_1=(Button)findViewById(R.id.Button01);
btn_1.setOnClickListener(osl); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

PS:在日出之前奔跑,在夕阳之下辉煌...

Android View之用户界面...的更多相关文章

  1. Android View和ViewGroup

    View和ViewGroup Android的UI界面都是由View和ViewGroup及其派生类组合而成的. 其中,View是所有UI组件的基类,而 ViewGroup是容纳这些组件的容器,其本身也 ...

  2. android.view.View

    * This class represents the basic building block for user interface components. A View * occupies a ...

  3. 虾扯蛋:Android View动画 Animation不完全解析

    本文结合一些周知的概念和源码片段,对View动画的工作原理进行挖掘和分析.以下不是对源码一丝不苟的分析过程,只是以搞清楚Animation的执行过程.如何被周期性调用为目标粗略分析下相关方法的执行细节 ...

  4. Android View.setId(int id) 用法

    Android View.setId(int id) 用法 当要在代码中动态的添加View并且为其设置id时,如果直接用一个int值时,Studio会警告. 经过查询,动态设置id的方法有两种; 1. ...

  5. android view 中各函数的执行顺数

    这个就好像是 activity 的生命周期一样,如果我们要使用自定义的 view,那么就很有必要了解一下 view 的那些能够被重写的函数的执行顺序.废话不多讲,以常用的5个函数为例子,见下文: pa ...

  6. Android项目部署时,发生AndroidRuntime:android.view.InflateException: Binary XML file line #168: Error inflating class错误

    这个错误也是让我纠结了一天,当时写的项目在安卓虚拟机上运行都很正常,于是当我部署到安卓手机上时,点击登陆按钮跳转到用户主界面的时候直接结束运行返回登陆界面.    当时,我仔细检查了一下自己的代码,并 ...

  7. Android View 事件分发机制 源码解析 (上)

    一直想写事件分发机制的文章,不管咋样,也得自己研究下事件分发的源码,写出心得~ 首先我们先写个简单的例子来测试View的事件转发的流程~ 1.案例 为了更好的研究View的事件转发,我们自定以一个My ...

  8. 简单研究Android View绘制三 布局过程

    2015-07-28 17:29:19 这一篇主要看看布局过程 一.布局过程肯定要不可避免的涉及到layout()和onLayout()方法,这两个方法都是定义在View.java中,源码如下: /* ...

  9. java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.ProgressBar$SavedState

    java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.Progress ...

随机推荐

  1. AsyncTask实现断点续传

    之前公司里面项目的下载模块都是使用xUtils提供的,最近看了下xUtils的源码,它里面也是使用AsyncTask来执行异步任务的,它的下载也包含了断点续传的功能.这里我自己也使用AsyncTask ...

  2. Determining if a point lies on the interior of a polygon

    Determining if a point lies on the interior of a polygon Written by Paul Bourke  November 1987 Solut ...

  3. Word中怎么设置标题的自动编号

    转自: http://jingyan.baidu.com/article/4f7d5712c39c0a1a201927ea.html

  4. Hbase&Hadoop常用命令

    Hbase中根据Rowkey的前缀Prefix查询数据: scan 'test_xiaomifeng_monitoring_log',{FILTER => "(PrefixFilter ...

  5. context:annotation-config 与context:component-scan

    <context:annotation-config/> <context:component-scan base-package="com.xx" /> ...

  6. android:themes.xml

    <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2006 The Andr ...

  7. [原创]自定义BaseAcitivity的实现,统一activity的UI风格样式

        在开发过程中经常遇到多个activity是同一种样式类型的情况,如果分别对其进行UI的布局,不但比较繁琐,而且后续维护过程人力成本很高,不利于敏捷开发.解决的方案是采用抽象后的BaseActi ...

  8. Hive Streaming 追加 ORC 文件

    1.概述 在存储业务数据的时候,随着业务的增长,Hive 表存储在 HDFS 的上的数据会随时间的增加而增加,而以 Text 文本格式存储在 HDFS 上,所消耗的容量资源巨大.那么,我们需要有一种方 ...

  9. Spring4 MVC Hibernate4集成

      Spring4 MVC Hibernate4集成 一.    本文所用环境 Spring4.0.3.RELEASE Hibernate4.3.5.Final Mysql 二.    工程目录 三. ...

  10. Excel的一些常用设置

    1. Freeze表头 (1) 下拉Worksheet的Pane,让该sheet有2个工作区,将该pane下拉到某一特定的行. (2)Window->Freeze Panes.此时会将pane智 ...