2015-04-06 92 views
4

如何为时间选取器(也用于日期选取器)实现此布局?默认的布局是一个(非常大的)时钟或一个(不是很漂亮的)旋钮式时间选择器。我在几个应用程序中看到了这一点,但无法找到如何实现这种外观和感觉。Android日期/时间轮选取器

enter image description here

+0

你可以检查时间选择器在Android这里有一些链接只是检查http://www.tutorialspoint.com/android/android_timepicker_control.htm http://www.mkyong.com/android/android-time-picker-示例/ http://androidexample.com/Time_Picker_With_AM_PM_Values_-_Android_Example/index.php?view=article_discription&aid=86&aaid=109 – Hanuman 2015-04-06 12:18:04

+0

http://www.tutorialspoint.com/android/android_timepicker_control.htm显示我想要的时间选择器布局,但它似乎是默认的时间选择器,虽然我没有在预览中看到它(使用最新的api 22)。我认为它是一个带有上/下按钮的微调器。 – Amos 2015-04-06 12:29:37

回答

1

这个例子有三个采摘:NumberPicker,DatePicker的和TimerPicker。

https://github.com/rodrigobusata/android-pickers

只能使用无库中的样品,并覆盖Android的默认采摘。

+0

谢谢。 “只使用没有库的样本并覆盖Android默认选取器”是什么意思? – Amos 2015-04-06 12:23:55

+0

您的惠康。在这个示例中,有一个示例使用了一个库来覆盖Android的默认选择器,可以更改颜色,但是您只希望使用具有默认颜色的选择器,请仅查看位于应用程序文件夹内的示例并覆盖“net.simonvt”。 timepicker.TimePicker“改为”TimePicker“。 – Busata 2015-04-06 12:32:06

+0

据我所知,我需要net.simonvt.datepicker.DatePicker(例如)实现为了看到我想要的外观和感觉,我在哪里可以找到它以便在我的代码中使用它?在链接中我只看到对它的引用,但不是实际的实现,我错过了什么? – Amos 2015-04-06 13:08:43

0

你应该注意到这个对话框是一个片段。

也就是说,主要想法是这样的: 当您需要启动此日期选取器时,您将显示该片段作为当前活动的叠加层。此片段具有日期选取侦听器:用户选择日期时启动的事件。好吧,一切都很简单,直到这里最难理解的将是最后一个:片段和活动之间的互动。做什么的?因为活动需要知道日期被选中。为了实现这一点,片段将有一个公共接口,将由该活动实施。

好吧,让我们来看看代码:

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); 
    } 
} 
+0

不知道我理解你的回复。我希望将时间/日期选取器组件放置在其他组件的片段上,供用户选择日期/时间。我的问题是关于时间选择器组件的布局。 – Amos 2015-04-06 13:04:20

+0

只使用DatePickerFragment类并跳过接口 – 2015-04-06 13:05:11

+0

因此,它不能用作布局中的简单对象/组件/视图以及其他对象/组件/视图?例如:日期选择器,文本视图和同一布局内的按钮? – Amos 2015-04-06 13:14:06

1

对于任何人将来参考可能需要这一点,可以通过选择一个TimePicker来实现这个时间选择器微调器然后在xml文件中键入android:timePickerMode="spinner"

小部件的XML代码应该是这样的:

<TimePicker 
    android:id="@+id/timePicker" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:timePickerMode="spinner" /> 

我的答案是基于documentation