Spinner是什麼呢,其實就是我們常見的下拉框,比如:
首先,我們要建立一個Spinner,才能在Spinner中添加我們想要的元素,在xml檔案中:
<Spinner
android:id="@+id/Spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Spinner>
<!--事件響應時展示的圖檔 !-->
<ImageButton
android:id="@+id/turtleImg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/mike"/>
接着,我們要寫我們的java程式了, 主要是onCreate()方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<String> turtleList = new ArrayList<>();
turtleList.add("Don");
turtleList.add("Mike");
turtleList.add("Leo");
turtleList.add("Raph");
Spinner spinner = findViewById(R.id.Spinner);
// 為下拉清單定義一個擴充卡,使用到上面定義的turtleList
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, turtleList);
// 為擴充卡設定下拉清單下拉時的菜單樣式,有好幾種樣式,請根據喜好選擇
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// 将擴充卡添加到下拉清單上
spinner.setAdapter(adapter);
// 為下拉框設定事件的響應
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
/**
*
* @param adapterView
* @param view 顯示的布局
* @param i 在布局顯示的位置id
* @param l 将要顯示的資料
*/
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
ArrayAdapter<String> adapter = (ArrayAdapter<String>) adapterView.getAdapter();
ImageButton turtleImaBtn = findViewById(R.id.turtleImg);
if(adapter.getItem(i).equals("Don")){
turtleImaBtn.setImageResource(R.drawable.don);
}
else if(adapter.getItem(i).equals("Mike")){
turtleImaBtn.setImageResource(R.drawable.mike);
}
else if(adapter.getItem(i).equals("Leo")){
turtleImaBtn.setImageResource(R.drawable.leo);
}
else if(adapter.getItem(i).equals("Raph")){
turtleImaBtn.setImageResource(R.drawable.raph);
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
最後我們運作結果,如圖所示: