很多安卓应用都有日期选择以及下拉列表的功能,具体就是下面图示的效果
具体代码实现如下
先写布局文件xml,style就不一一列举了,根据自己的需求写就好
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/LinearLayout1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp">
<TextView
style="@style/TongjiTitle"
android:text="添加新账"/>
</LinearLayout>
<LinearLayout
android:layout_marginTop="5dp"
style="@style/LinearLayout2">
<TextView
style="@style/addTextView"
android:drawableRight="@mipmap/riqi"/>
<EditText
android:id="@+id/et_date"
style="@style/addEditText"/>
<TextView
style="@style/addTextView"
android:drawableRight="@mipmap/kinds"/>
<Spinner
android:id="@+id/spinner1"
style="@style/addEditText"/>
</LinearLayout>
<LinearLayout
android:layout_marginTop="5dp"
style="@style/LinearLayout2">
<TextView
style="@style/addTextView"
android:drawableRight="@mipmap/money"/>
<EditText
android:id="@+id/et_money"
style="@style/addEditText"/>
<TextView
style="@style/addTextView"
android:drawableRight="@mipmap/text"/>
<EditText
android:id="@+id/et_text"
style="@style/addEditText"/>
</LinearLayout>
<LinearLayout
style="@style/LinearLayout2"
android:gravity="center">
<Button
android:id="@+id/btn_concel"
style="@style/addButton"
android:text="取消"/>
<TextView
android:layout_width="15dp"
android:layout_height="60dp" />
<Button
android:id="@+id/btn_add"
style="@style/addButton"
android:text="确认添加"/>
</LinearLayout>
</LinearLayout>
接下来是activity具体实现
我是在继承Fragment的类写的,所以写在onCreateView方法里,如果是在继承AppCompatActivity的类中,则直接写在onCreate方法里就好。区别就是onCreateView中的findViewById前需要加上你定义的View,在使用 适配器ArrayAdapter时第一个参数不能用this,而要用getActivity(),这个很重要,我纠结了好久才解决。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.addfragment, container, false);
et_date=(EditText)rootView.findViewById(R.id.et_date);
et_money=(EditText)rootView.findViewById(R.id.et_money);
et_text=(EditText)rootView.findViewById(R.id.et_text);
btn_add=(Button)rootView.findViewById(R.id.btn_add);
btn_cancel=(Button)rootView.findViewById(R.id.btn_concel);
dbOpenHelper=new MyDBOpenHelper(getActivity().getApplicationContext());
//设置选择日期
dateFormatter = new SimpleDateFormat("MM月dd日");//这里可以设置日期的格式,如果是年月日则改为yyyy年MM月dd日
createDate= Calendar.getInstance();
createDate.setTimeInMillis(System.currentTimeMillis());
et_date.setText(dateFormatter.format(new Date(createDate.getTimeInMillis())));//把当前系统日期显示在TextView中,如果需要不显示注释掉即可
et_date.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
createDate.set(year, month, day);
et_date.setText(dateFormatter.format(new Date(createDate.getTimeInMillis())));
}
}, createDate.get(Calendar.YEAR), createDate.get(Calendar.MONTH), createDate.get(Calendar.DAY_OF_MONTH))
.show();
}
});
List<String> list = new ArrayList<String>();
list.add("零花");
list.add("吃饭");
list.add("日常");
list.add("学习");
list.add("饭卡");
//第一项也就是显示的为零花,如果不设置初始值,则第一项可直接设置为空list.add("");或者是常用的list.add("请选择类型");
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item,list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
final Spinner sp=(Spinner)rootView.findViewById(R.id.spinner1);
sp.setAdapter(adapter);
获取下拉列表框选中的值,我常用的方法如下,提取出选中项内容后就可以根据activity所需做相应处理了。
Spring spr=sp.getSelectedItem().toString();