Spinner、AutoCompleteTextView(自动完成控件)、Switch(滑动开关)这三个控件使用的场合使用的场合虽然不是很多,但是我们也有必要了解熟悉一下,万一用到了呢?
一、Spinner选择控件,一般使用的场合在选择选项不是很多的情况下,如在校大学生入学年份等,这个时候我们就可以使用Spinner给用户提供选择,而不必要自己输入了,Spinner和ListView相似也需要一个Adapter(应该说其自带ListView也不为过),设置完成一个Spinner也只需要三步就能呢个完成:1、获得控件,2、适配器,3、关联适配器下面我们来看一下一个简单的Spinner:
先看效果图(基础总结项目只做演示使用,项目界面可能很丑):
下面是MainActivity的代码,MainActivity.java:
package com.example.sprittest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class MainActivity extends Activity {
//声明控件
Spinner spinner1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得spinner控件
spinner1=(Spinner) findViewById(R.id.sp1);
//数组适配器
ArrayAdapter<String>adapter=new ArrayAdapter<String>(this, R.layout.spinner_item, R.id.tv_spinnerItem,new String[]{"请选择入学年份","2012","2013","2014","2015","2016"});
//Spinner设置适配器
spinner1.setAdapter(adapter);
}
/***
* 按钮点击时间处理
* @param view
*/
public void doClick(View view){
if(spinner1.getSelectedItemPosition()!=0){//当点击位置不为第一个位置时
String selected = spinner1.getSelectedItem().toString();//spinner选中
Toast.makeText(MainActivity.this,"您"+ selected+"年入学", Toast.LENGTH_SHORT).show();
}else {//但点击第一个位置时
Toast.makeText(MainActivity.this, "您还没有选择入学年份", Toast.LENGTH_SHORT).show();
}
}
}
MainActivity布局,activity_main.xml:
<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="com.example.sprittest.MainActivity" >
<Spinner
android:id="@+id/sp1"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_alignParentTop="true"
android:background="#C0C0C0"
/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="确定"
android:onClick="doClick"
/>
</RelativeLayout>
Spinner控件中的列表布局,本来可以使用安卓自带布局(android.R.layout.simple_list_item_1)的,但是为了自定义列表样式(如字体,背景色等),使用了自定义布局,
spinner_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/tv_spinnerItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#7FCE46"
android:textColor="#F147D7"
/>
</RelativeLayout>
这样一个简单的Spinner就写好了,可以点击确定按钮显示当前选择的入学年份,当然Spinner的Adapter可以使用自定义Adapter,和listView相似,使用自定义Adapter继承BaseAdapter后列表的样式可以很丰富,这里只是基础总结,不再扩展。
二、AutoCompleteTextView(自动完成控件),怎么说呢,有点像浏览器输入网址的输入框一样,当你输入www时,下面会匹配一堆www开头或包含www的网址可以提供用户选择,当您点击下面匹配的网址时,浏览器网址输入框会帮你自定完成输入,这个AutoCompleteTextView(自动完成控件)完成的就是这种类似效果,AutoCompleteTextView控件的显示和设置和Spinner是一样的,下面看示例:
MainActivity代码,MainActivity.java:
package com.example.autocompletetextviewdemo;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class MainActivity extends Activity {
private AutoCompleteTextView actv_SCTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得AutoCompleteTextView控件
actv_SCTextView=(AutoCompleteTextView) findViewById(R.id.actv_SCTextView);
//数字适配器
ArrayAdapter<String>adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,new String[]{"AA1","aa1","Ab2","ab3","cc4","AB","bb"});
//AutoCompleteTextView关联适配器
actv_SCTextView.setAdapter(adapter);
//设置输入几个字符数时提示,默认是2
actv_SCTextView.setThreshold(1);
}
}
MainActivity布局,activity_main.xml:
<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="com.example.autocompletetextviewdemo.MainActivity" >
<AutoCompleteTextView
android:id="@+id/actv_SCTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="输入搜索,如AA" />
</RelativeLayout>
显示的效果图为:
当点击下方列表时,输入框会以点击的Item为准完成输入。