在Android开发中某些时候少不了二级菜单Spinner的使用,下拉列表Spinner可以设置其选项点击事件的监听器,就像给ListView设置选项点击事件但监听器一样:setOnItemClickListener(),还可以设置长按点击事件setOnItemLongClickListener()。
下拉列表的风格又很多种,可以根据自己的喜爱来设置,这里我就介绍一下常用的类型;
首先,布局
在自己的布局文件中定义一个Spinner
<Spinner
android:id="@+id/sp_type_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="10dp" />
然后再strings.xml文件中编写二级菜单目录
<array name="type_name">
<item>凉菜</item>
<item>小吃</item>
<item>零食</item>
<item>主食</item>
<item>水果</item>
<item>茶</item>
</array>
接下来就是要拿到数据,并且把数据显示到Spinner上
注意:我这里写的的长按事件,如果想写单击事件的话就改为setOnItemClickListener
R.layout.simple_spinner_dropdown_item是Android自带的比较常用的一种风格
MainActivity.java
package com.example.menudemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class NewItem extends AppCompatActivity {
private Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_new_item);
spinner = findViewById (R.id.sp_type_name);
getData();
}
private void getData() {
//拿到数据
final String[] arrays = getResources ().getStringArray (R.array.type_name);
//获取系统自带的适配器
ArrayAdapter<String> mSpinnerAdapter = new ArrayAdapter<String> (NewItem.this,android.R.layout.simple_spinner_dropdown_item,arrays);
spinner.setAdapter (mSpinnerAdapter);
//添加点击事件
spinner.setOnItemLongClickListener (new AdapterView.OnItemLongClickListener () {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText (NewItem.this, "哈喽" + arrays[position], Toast.LENGTH_SHORT).show ();
return false;
}
});
}
}
效果图: