声明
欢迎转载,但请保留文章原始出处:)
专注:http://www.focuser.org
本文链接:http://www.focuser.org/?p=270
由于手机屏幕尺寸大小的限制,在有限的空间中展现良好的UI效果使我们追求的,在android中,spinner下拉菜单在我们的开发过程中使用的次数相当的多,也是我们每个开发者所必须掌握的技术。
在实现动态的添加和删除spinner菜单中,我们使用到了ArrayList这个集合类,java学的好的兄弟都知道集合类的好处,通过集合类 ArrayList动态的进行添加和删除,在显示效果上我们采用了自定义的下拉菜单,另外还将android中的动画效果也用了上,在实现数据绑定的时候 使用了数组还有在xml文件中的数据两种方式,时间关系效果图就不给大家亮出来了,呵呵。
下面是MainActivity
package org.focuser.spinner;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class MainActivity extends Activity {
private String []array={“科比”,”詹姆斯”,”奥尼尔”,”乔丹”};
private TextView textview=null;
private Spinner spinner=null;
private EditText edittext=null;
private Button button1=null;
private Button button2=null;
private ArrayAdapter
private List
Animation animation;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//取得控件对象
textview=(TextView)findViewById(R.id.textview);
spinner=(Spinner)findViewById(R.id.spinner);
edittext=(EditText)findViewById(R.id.edittext);
button1=(Button)findViewById(R.id.button1);
button2=(Button)findViewById(R.id.button2);
allCou=new ArrayList
for(int i=0;i
allCou.add(array[i]);
}
button1.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String newarray=edittext.getText().toString();
for(int i=0;i
if(newarray.equals(adapter.getItem(i)))
{
return;
}
}
if(!newarray.equals(“”))
{
adapter.add(newarray);
int position=adapter.getPosition(newarray);
spinner.setSelection(position);
edittext.setText(“”);
}
}
});
button2.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(spinner.getSelectedItem().toString()!=null)
{
adapter.remove(spinner.getSelectedItem().toString());
edittext.setText(“”);
if(adapter.getCount()==0)
{
edittext.setText(“”);
}
}
}
});
//设置adapter
adapter=new ArrayAdapter
//adapter=new ArrayAdapter
// adapter=ArrayAdapter.createFromResource(this, R.array.array, android.R.layout.simple_spinner_item);
//adapter=new ArrayAdapter
//下面是用了两种不同的方式显示下拉列表1.自定义的样式 2.利用系统内部的样式
adapter.setDropDownViewResource(R.layout.dropdown);
//adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//将spinner空件绑定adapter以传递数据
spinner.setAdapter(adapter);
//给spinner控件添加选择setOnItemSelectedListener事件
spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
//在textview中显示点击的选项
//textview.setText(“您选择的是:”+ array[position]);
textview.setText(“您选择的是:”+ parent.getItemAtPosition(position));
//将spinner的可见性设置为可见状态
parent.setVisibility(View.VISIBLE);
}
@Override
public void onNothingSelected(AdapterView> parent) {
// TODO Auto-generated method stub
}
});
//编写动画对象,并且获取自定应的动画样式
animation=AnimationUtils.loadAnimation(this, R.anim.animation);
spinner.setOnTouchListener(new Spinner.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
//运行动画animation
v.startAnimation(animation);
//将spinner的可见性设置为不可见状态
v.setVisibility(View.INVISIBLE);
return false;
}
});
spinner.setOnFocusChangeListener(new Spinner.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
v.startAnimation(animation);
//将spinner的可见性设置为可见状态
v.setVisibility(View.VISIBLE);
}
});
}
}
接下来是main.xml文件
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
>
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”@string/hello”
/>
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
/>
还有自定义的下拉菜单样式dropdown.xml文件
android:layout_width=”match_parent”
android:layout_height=”24sp”
android:id=”@+id/textview1″
android:singleLine=”true”
style=”?android:attr/spinnerDropDownItemStyle”
>
哈哈,这就是动态实现spinner下拉菜单的主要代码了,高手就过了,跟我水平差不多的可以稍微看看,小白们可要仔细看看学习喽,嘿嘿!