`
xitongyunwei
  • 浏览: 927832 次
文章分类
社区版块
存档分类
最新评论

A09_Spinner自定义设置

 
阅读更多

Spinner控件是一个下拉列表

1.实现Spinner的系统默认设置

2.实现自定义设置:

3.使用的监听器接口是:OnItemSelectedListener

系统默认设置效果:


自定义设置效果:

由于只设置显示的是一个TextView所以效果比较难看,还可以优化。这里重新定义了下拉列表的样式,使用list.xml。


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"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textViewId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="测试:"
        android:layout_alignParentLeft="true" />

    <Spinner
        android:id="@+id/spinner"
        android:layout_below="@id/textViewId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</RelativeLayout>

list.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/list_textViewId"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

strings.xml代码:

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

    <string name="app_name">A09_Spinner</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>
    <string-array name="ThreeDays">
        <item >昨天</item>
        <item >今天</item>  
        <item >明天</item>
    </string-array>

</resources>

java代码:

package com.haut.a09_spinner;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	private Spinner spinner;
	private TextView textView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		spinner = (Spinner)findViewById(R.id.spinner);
		textView = (TextView)findViewById(R.id.textViewId);
		//创建一个ArrayAdapter
		//静态使用xml文件设置下拉列表内容
		/**
		 * ArrayAdapter参数说明:
		 * 第一个:上下文对象
		 * 第二个:下拉菜单数据来源的id
		 * 第三个:下拉菜单的样式,这里使用了android标准下拉菜单的样式
		 */
		//ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.ThreeDays, android.R.layout.simple_spinner_item);
		//调用setDropDownViewResource()方法设置下拉列表每一个选项的样式,这里也是用Android标准样式
		//adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		//动态设置下拉列表内容
		List<String> list = new ArrayList<String>();
		list.add("昨天");
		list.add("今天");
		list.add("明天");
		/**
		 * 参数
		 * 第一个:上下文对象
		 * 第二个:自定义下拉菜单的选项的样式
		 * 第三个:自定义下拉菜单选项控件的样式id
		 * 第四个:列表数据
		 */
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list,R.id.list_textViewId,list);
		
		
		
		
		
		//为spinner添加适配器
		spinner.setAdapter(adapter);
		//设置Spinner下拉列表的标题··
		spinner.setPrompt("只有这三天");
		
		//为spinner绑定监听器
		spinner.setOnItemSelectedListener(new SpinnerListener());
	}
	//该监听器用于监听用户多spinner的操作
	class SpinnerListener implements OnItemSelectedListener{
		//当用户选择先拉列表中的选项时会调用这个方法
		/**
		 *参数说明:
		 *第一个:当前的下拉列表,也就是第三个参数的父view
		 *第二个:当前选中的选项
		 *第三个:所选选项的位置
		 *第四个: 所选选项的id
		 */
		public void onItemSelected(AdapterView<?> adapterView, View view, int position,
				long id) {
			//获取用户所选的选项内容
			String selected = "您的选择是:"+adapterView.getItemAtPosition(position).toString();
			textView.setText(selected);
			Toast.makeText(MainActivity.this, selected, Toast.LENGTH_SHORT).show();
		}
		//当用户不做选择时调用的该方法
		public void onNothingSelected(AdapterView<?> arg0) {
			Toast.makeText(MainActivity.this, "您没有选择任何选项", Toast.LENGTH_SHORT).show();
		}
		
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics