例子效果图

实现步骤

第一步 :建 Android 工程: SpinnerDemo

第二步 :编写 Activity 的子类别: SpinnerDemo ,其程序代码如下:

package com.a3gs.spinner;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.*;

public class SpinnerDemo extends Activity {

private TextView myTV;

private Spinner mySp;

private EditText myET;

private Button addBtn, delBtn;

private final String[] items = {" 北京市 ", " 上海市 ", " 天津市 ", " 福州市 "} ;

private ArrayAdapter<String> adapter;

private List<String> allItems;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

myTV = (TextView) findViewById(R.id.myTV);

myET = (EditText) findViewById(R.id.myET);

addBtn = (Button) findViewById(R.id.addBtn);

delBtn = (Button) findViewById(R.id.delBtn);

mySp = (Spinner) findViewById(R.id.mySpinner);

mySp.setVisibility(View.VISIBLE);

allItems = new ArrayList<String>();

for(int i=0; i < items.length; i++){

allItems.add(items[i]);

}

adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, allItems);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

mySp.setAdapter(adapter);

mySp.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){

@Override

public void onItemSelected(AdapterView<?> arg0, View arg1,

int arg2, long arg3) {

// TODO Auto-generated method stub

myTV.setText(" 您选择的是: " + mySp.getSelectedItem().toString());

}

@Override

public void onNothingSelected(AdapterView<?> arg0) {

// TODO Auto-generated method stub

}

});

addBtn.setOnClickListener(new Button.OnClickListener(){

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

String ETText = myET.getText().toString();

int len = adapter.getCount();

// 检查所添加的是否已经存在

for(int i = 0; i < len; i++){

if(ETText.equals(adapter.getItem(i))){

return;

}

}

if(!ETText.equals("")){

adapter.add(ETText);

int position = adapter.getPosition(ETText);

mySp.setSelection(position);

myET.setText("");

}

}

});

delBtn.setOnClickListener(new Button.OnClickListener(){

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

if(mySp.getSelectedItem() != null) {

adapter.remove(mySp.getSelectedItem().toString());

myET.setText("");

}

if(adapter.getCount() == 0){

myET.setText("");

}

}

});

}

}

第三步 :修改 res/layout/main.xml ,其代码如下:

<? xml version = "1.0" encoding = "utf-8" ?>

< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"

android:orientation = "vertical"

android:layout_width = "fill_parent"

android:layout_height = "fill_parent"

>

< TextView

android:id = "@+id/myTV"

android:layout_width = "fill_parent"

android:layout_height = "wrap_content"

android:text = "@string/hello"

/>

< EditText

android:id = "@+id/myET"

android:layout_width = "fill_parent"

android:layout_height = "wrap_content"

/>

< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"

android:orientation = "horizontal"

android:layout_width = "fill_parent"

android:layout_height = "wrap_content"

>

< Button

android:id = "@+id/addBtn"

android:layout_width = "160sp"

android:layout_height = "wrap_content"

android:text = "@string/btn_text1"

/>

< Button

android:id = "@+id/delBtn"

android:layout_width = "160sp"

android:layout_height = "wrap_content"

android:text = "@string/btn_text2"

/>

</ LinearLayout >

< Spinner

android:id = "@+id/mySpinner"

android:layout_width = "fill_parent"

android:layout_height = "wrap_content"

/>

</ LinearLayout >

第四步 :修改 res/layout/spinner_dropdown.xml ,其代码如下:

<? xml version = "1.0" encoding = "utf-8" ?>

< TextView

xmlns:android = "http://schemas.android.com/apk/res/android"

android:id = "@+id/text"

android:layout_width = "wrap_content"

android:layout_height = "25sp"

android:singleLine = "true"

style = "?android:attr/spinnerDropDownItemStyle"

/>

扩展学习

setDropDownViewResource 主要是设置 User 点击 Spinner 后出现的下拉菜单样式,除了前一个范例使用自设方式改变 TextView 内容之外, android 亦提供两种基本的样式:

android.R.layout.simple_spinner_item TextView 的下拉菜单。

android.R.layout.simple_spinner_dropdown_item :除了有 TextView ,右边有 radio 的下拉菜单。

查看 Android 源代码中的 simple_spinner_drop, , down_item.xml ,内容如下:

<?xml version="1.0" encoding="utf-8"?>

<TextView

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@android:id/text1"

android:layout_width="fill_parent"

android:layout_height="?android:attr/listPreferredItemHeight"

android:singleLine="true"

style="?android:attr/spinnerDropDownItemStyle"

/>

以下为自定义修改后,适用于 spinner Layout

<?xml version="1.0" encoding="utf-8"?>

<TextView

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@android:id/text1"

android:layout_width="fill_parent"

android:layout_height="12sp"

android:singleLine="true"

style="?android:attr/spinnerDropDownItemStyle"

android:textSize="10sp"

/>

更多相关文章

  1. RadioButton和CheckBox自定义按钮图片的样式
  2. Android 利用Sharp样式设置文本框EditText圆角形状
  3. Android之菜单总结
  4. TabHost与RadioGroup结合完成的菜单【带效果图】5个Activity
  5. SlidingMenu和ActionBarSherlock结合做出出色的App布局,Facebook
  6. [android]在上下文菜单的选中事件中获取列表选中的元素
  7. android listview custom style 自定义样式
  8. Android修改字体样式

随机推荐

  1. Android 的界面构成
  2. Android(安卓)Gradle命令打包
  3. 获取Android设备常规参数信息(SN,IMEI)及
  4. 主线程中Looper的轮询死循环为何没有阻塞
  5. Android通过WebService实现图片的上传和
  6. Android中Canvas绘图基础详解(附源码下载)
  7. Android(安卓)中在有序广播中添加自定义
  8. Qt for Android(安卓)环境搭建方法
  9. [置顶] Retrofit2使用方式和源码解析
  10. 为什么没有好用的Android游戏引擎?