首页 > 系统 > Android > 正文

A09_Spinner(下拉列表)自定义设置

2019-10-24 20:48:14
字体:
来源:转载
供稿:网友
Spinner控件是一个下拉列表实现自定义设置:使用的监听器接口是:OnItemSelectedListener,自定义实现如下感兴趣的朋友可以参考下哈
 
Spinner控件是一个下拉列表 
1.实现Spinner的系统默认设置 
2.实现自定义设置: 
3.使用的监听器接口是:OnItemSelectedListener

系统默认设置效果: 
A09_Spinner(下拉列表)自定义设置 
自定义设置效果: 
由于只设置显示的是一个TextView所以效果比较难看,还可以优化。这里重新定义了下拉列表的样式,使用list.xml。 
A09_Spinner(下拉列表)自定义设置 
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; 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表