今天给大家带来Spinner下拉选项卡
效果
静态使用
第一步:在xml布局中声明Spinner
<Spinner
android:layout_margin="30dp"
android:id="@+id/spinner"
android:gravity="center_vertical"
android:spinnerMode="dropdown"
android:layout_width="wrap_content"
android:entries="@array/spinnerList"
android:layout_height="wrap_content"/>
第二步:需要在res/values下创建arrays.xml.来声明下拉的文字
补充: 这里xml中有2种样式:
-
android:spinnerMode=“dropdown” //效果图2
-
android:spinnerMode=“dialog” //效果图1
第三步:在布局中获取Spinner控件对象并获取点击事件
private Spinner mSpinner;
mSpinner = findViewById(R.id.spinner);
//Spinner点击事件 获取当前点击的position下标
mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//获取资源文件String数组
String[] stringArray = getResources().getStringArray(R.array.spinnerList);
TextView tv = (TextView) view;
//设置字体颜色
tv.setTextColor(getResources().getColor(R.color.colorPrimary));
Toast.makeText(MainActivity.this, ""+stringArray[position], Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
补充:
-
mSpinner.setDropDownHorizontalOffset(10); //android:spinnerMode=“dropdown” 向右偏移10dp
-
mSpinner.setDropDownVerticalOffset(100); //android:spinnerMode="dropdown"向左偏移100dp
-
mSpinner.setPrompt(“请选择:”); //android:spinnerMode=“dialog” 情况下 显示提示语句
-
mSpinner.setSelection(3); //android:spinnerMode=“dropdown” 默认显示第三项
-
mSpinner.setPopupBackgroundResource(R.color.colorAccent);//android:spinnerMode=“dropdown” 设置背景
动态使用
ArrayList<String> list = new ArrayList<>();
list.add("中国");
list.add("尼泊尔");
list.add("巴西");
list.add("巴西");
list.add("印度");
list.add("澳大利亚");
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item, list);
//这里使用的是系统自带的simple_spinner_dropdown_item布局 如果不设置这个的话 在
//android:spinnerMode="dropdown"情况下下拉弹出的字就会很紧凑 建议动手试一试!
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(adapter);
补充:
- 动态代码是比静态代码后执行的,所以得出结论,如果您设置了动态代码,也设置了静态代码他只会显示动态代码的值.
自定义Spinner下拉布局
第一步:创建Bean类
public class SpinnerBean {
private String title;
private int image;
public SpinnerBean(String title, int image) {
this.title = title;
this.image = image;
}
public String getTitle() {
return title;
}
public int getImage() {
return image;
}
}
第二步:创建适配器继承自BaseAdapter
public class MySpinnerAdapter extends BaseAdapter {
public ArrayList<SpinnerBean> mSpinnerBean;
public Context mContext;
public MySpinnerAdapter(ArrayList<SpinnerBean> mSpinnerBean,Context mContext) {
this.mSpinnerBean = mSpinnerBean;
this.mContext = mContext;
}
@Override
public int getCount() {
return mSpinnerBean.size();
}
@Override
public Object getItem(int position) {
return mSpinnerBean.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
ViewHolder viewholer = null;
if (view == null) {
viewholer = new ViewHolder();
view= LayoutInflater.from(mContext).inflate(R.layout.spinner_item_layout, null);
viewholer.mImageView = view.findViewById(R.id.image);
viewholer.mTextView = view.findViewById(R.id.tv);
view.setTag(viewholer);
}else{
viewholer = (ViewHolder) view.getTag();
}
viewholer.mTextView.setText(mSpinnerBean.get(position).getTitle());
Glide.with(mContext)
.load(mSpinnerBean.get(position).getImage())
.apply(new RequestOptions().placeholder(R.mipmap.ic_launcher))
.into(viewholer.mImageView);
return view;
}
class ViewHolder{
private ImageView mImageView;
private TextView mTextView;
}
}
第三步:使用
ArrayList<SpinnerBean> spinnerBeans = new ArrayList<>();
spinnerBeans.add(new SpinnerBean("中国",R.drawable.ic_launcher_foreground));
spinnerBeans.add(new SpinnerBean("尼泊尔",R.drawable.ic_launcher_foreground));
spinnerBeans.add(new SpinnerBean("巴西",R.drawable.ic_launcher_foreground));
spinnerBeans.add(new SpinnerBean("印度",R.drawable.ic_launcher_foreground));
spinnerBeans.add(new SpinnerBean("澳大利亚",R.drawable.ic_launcher_foreground));
MySpinnerAdapter mySpinnerAdapter = new MySpinnerAdapter(spinnerBeans, this);
mSpinner.setAdapter(mySpinnerAdapter);
效果
GitHub链接: lanYangYang.
谢谢大家观看,Android小白,欢迎大佬指点不足~