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小白,欢迎大佬指点不足~

猜你喜欢

转载自blog.csdn.net/weixin_44819566/article/details/106491555