spinner的使用
layout.xml:
<Spinner android:layout_width="30dp" android:layout_height="wrap_content" android:layout_marginLeft="150dp" android:layout_gravity="center_vertical" android:id="@+id/spinner" android:entries="@array/timeChoose" android:gravity="center" android:textSize="20sp" android:theme="@style/SpnStyle" android:layout_weight="0.08" />
静态设置下拉列表中值的方法:在value/arrays.xml中加入想要显示的值
<resources> <string-array name="timeChoose"> 这里的name一定要定义,后面会用到 <item>当天</item> <item>最近一周</item> <item>最近一月</item> </string-array> </resources>
创建MainActivity
public class MainActivity extends BaseActivity{ private Spinner spinner; private ArrayAdapter dateAdapter;// public void onCreate(Bundle saveInstaceState){ super.onCreate(saveInstaceState); setContentView(R.layout.testSpinner.xml); spinner = (Spinner)findViewById(R.id.spinner); /** * createFromResource()中的三个参数: * this:当前上下文 * R.array.timeChoose:之前定义的arrays.xml中的string-array,目的是将静态列表内容填充到spinner下拉列表中 * simple_spinner_item:下拉列表的一种表现形式 * 还有一个simple_spinner_dropdown_item * 详细了解https://blog.csdn.net/buaaroid/article/details/49332845 * 文章给出了这两种风格的源码,知识点两个: * TextView中属性:android:ellipsize/android:textAlignmentStyle * 详细了解https://blog.csdn.net/qq_26296197/article/details/48209305 * https://blog.csdn.net/yihonglvyu1/article/details/53321417 * 结论:我们可以自定义我们想要的风格 */ //填充值 dateAdapter = ArrayAdapter.createFromResource(this,R.array.timeChoose,android.R.layout.simple_spinner_item); dateAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(dateAdapter); //设置点击事件 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()){ public void onItemSelected(AdapterView<?>parent,View view,int posiition,long id){ try{ //设置重复点击列表中的内容,每次都会有响应 Field field = AdapterView.class.getDeclaredField("mOldselectedPosition"); field.setAccessible(true); field.setInt(spinner,AdapterView.INVALID_POSITION); }catch(Exception e){ e.printStackTrace(); } ........ } public void onNothingSelected(AdapterView<?>parent){ //该方法当R.array.timeChoose中为空的时候(也就是下拉列表中没有填充数据时),会响应 //https://blog.csdn.net/u012702547/article/details/50598673 } } } }