天天看点

Android基础核心总结之二-----Spinner、AutoCompleteTextView(自动完成控件)

         Spinner、AutoCompleteTextView(自动完成控件)、Switch(滑动开关)这三个控件使用的场合使用的场合虽然不是很多,但是我们也有必要了解熟悉一下,万一用到了呢?

一、Spinner选择控件,一般使用的场合在选择选项不是很多的情况下,如在校大学生入学年份等,这个时候我们就可以使用Spinner给用户提供选择,而不必要自己输入了,Spinner和ListView相似也需要一个Adapter(应该说其自带ListView也不为过),设置完成一个Spinner也只需要三步就能呢个完成:1、获得控件,2、适配器,3、关联适配器下面我们来看一下一个简单的Spinner:

        先看效果图(基础总结项目只做演示使用,项目界面可能很丑

Android基础核心总结之二-----Spinner、AutoCompleteTextView(自动完成控件)

):

Android基础核心总结之二-----Spinner、AutoCompleteTextView(自动完成控件)

下面是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>
           

显示的效果图为:

Android基础核心总结之二-----Spinner、AutoCompleteTextView(自动完成控件)

当点击下方列表时,输入框会以点击的Item为准完成输入。