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) { } }); }
最后我們運行結果,如圖所示: