在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;
}
});
}
}
效果圖: