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) { } }); }
最后我们运行结果,如图所示: