Android Spinner(下拉菜单)常用属性与点击事件获取值

效果图:

图1:

在这里插入图片描述

图2:

在这里插入图片描述

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

   <Spinner
       android:id="@+id/sp_type"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerInParent="true"
       android:spinnerMode="dropdown"
       android:dropDownWidth="250dp"
       android:entries="@array/menu_type">
   </Spinner>

</RelativeLayout>

在 res / values 目录下新建 menu_type.xml文件:

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

    <string-array name="menu_type">
        <item>苹果</item>
        <item>香蕉</item>
        <item>柠檬</item>
        <item>西瓜</item>
    </string-array>

</resources>

MainActivity.java

public class MainActivity extends AppCompatActivity  {
    private Spinner spType;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spType = findViewById(R.id.sp_type);
        //	Splinner的监听事件
        spType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {		
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String info = (String) spType.getSelectedItem();
                Toast.makeText(MainActivity.this,info,Toast.LENGTH_LONG).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
        
    }
    
}

直接点击运行即可 !

属性介绍:
android:spinnerMode="dialog"		//显示模式

// dropdown	——	直接下拉模式
//	dialog	——	对话框效果模式

演示对话框模式,如下图:

在这里插入图片描述

属性介绍:
 android:dropDownWidth="250dp"	//	下拉框宽度

 值越大,宽度越宽

如下图:

在这里插入图片描述

总结:		【	常 用 属 性	】
1.	   android:entries="@array/menu_type"	//	绑定XML文件找那个的数据源
		
2.		android:spinnerMode="dropdown"		//	显示模式 
		"dropdown"	直接下拉模式
		"dialog"	对话框效果模式

4.	    android:dropDownWidth="250dp"		//	下拉框宽度

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spinner控件本身不支持多选功能,但可以通过自定义适配器来实现多选下菜单。 以下是一个示例代码: ```java public class MultiSpinnerAdapter extends ArrayAdapter<String> implements OnItemClickListener { private List<String> items; private boolean[] selected; private Spinner spinner; public MultiSpinnerAdapter(Context context, int textViewResourceId, List<String> items, Spinner spinner) { super(context, textViewResourceId, items); this.items = items; this.selected = new boolean[items.size()]; this.spinner = spinner; spinner.setOnItemClickListener(this); } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); TextView textView = (TextView) view.findViewById(android.R.id.text1); if (selected[position]) { textView.setTextColor(Color.RED); } else { textView.setTextColor(Color.BLACK); } return view; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { selected[position] = !selected[position]; getView(position, view, parent); } public List<String> getSelectedItems() { List<String> selectedItems = new ArrayList<>(); for (int i = 0; i < items.size(); i++) { if (selected[i]) { selectedItems.add(items.get(i)); } } return selectedItems; } } ``` 在Activity中使用该适配器: ```java Spinner spinner = (Spinner) findViewById(R.id.spinner); List<String> items = Arrays.asList("Item 1", "Item 2", "Item 3", "Item 4"); MultiSpinnerAdapter adapter = new MultiSpinnerAdapter(this, android.R.layout.simple_spinner_item, items, spinner); spinner.setAdapter(adapter); // 取选中的项 List<String> selectedItems = adapter.getSelectedItems(); ``` 以上代码实现了一个多选下菜单,当用户点列表项时,会切换该项的选中状态,并且选中状态的文本颜色将变为红色。getSelectedItems()方法可以取选中的项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王睿丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值