[英]Android date/time wheel picker
如何为时间选择器(以及日期选择器)实现此布局? 默认布局是(非常大)时钟或(非美)微调器时间选择器。 我在几个应用程序中看到了这一点,但无法找到如何实现这种外观和感觉。
对于可能需要这个的任何人的未来参考,只需在android小部件中选择一个TimePicker然后在xml文件中输入android:timePickerMode="spinner"
就可以实现这个时间选择器微调android:timePickerMode="spinner"
。
您的小部件xml代码应如下所示:
<TimePicker
android:id="@+id/timePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:timePickerMode="spinner" />
我的回答是基于文档 。
这个例子有三个选择器:NumberPicker,DatePicker和TimerPicker。
https://github.com/rodrigobusata/android-pickers
要么
仅使用没有库的示例并覆盖Android默认选择器。
您应该注意,此对话框是一个片段。
也就是说,主要的想法是:当你需要启动这个日期选择器时,你会将该片段显示为当前活动的叠加。 此片段具有日期选择侦听器:用户选择日期时启动的事件。 好的,到此为止一切都很简单。 最难理解的是最后一个:片段和活动之间的交互。 做什么的? 因为活动需要知道选择了日期。 为实现此目的,Fragment将具有将由活动实现的公共接口。
好的,让我们看看代码:
MyActivity.java
public class MyActivity extends FragmentActivity implements DatePickerFragment.FragmentInteraction{
@Override
public void onCreate(Bundle savedInstanceState){
Button showDatePickerButton = (Button)findViewById(R.id.dateButton);
showDatePickerButtonsetOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), getString(R.string.datePickerTitle));
}
});
}
@Override
public void doSomethingWithDate(int day, int month, int year) {
Log.d("", "SELECTED DATE " + month + "/" + day + "/" + year);
}
}
DatePickerFragment.java
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{
private FragmentInteraction mListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mListener = (FragmentInteraction) activity;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
//Show picker with actual date presetted
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker view, int anio, int mes, int dia) {
mListener.doSomethingWithDate(dia, mes + 1, anio);
}
public interface FragmentInteraction{
public void doSomethingWithDate(int dia, int mes, int anio);
}
}
只需在xml中添加timepickermode就像这样<TimePicker android:id="@+id/time" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" android:gravity="center" android:timePickerMode="spinner" android:text="TimePicker" android:textSize="18sp" android:textColor="@android:color/black" android:textStyle="bold"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.