2013-12-23 25 views
3

我想创建一个控件,允许用户选择一周中的某一天(星期一)和一天中的某一天(下午1:00)在我的Android活动。无法找到任何好帖子?Android中的星期几和时间选择器,用于定期事件

+0

所以基本上你想要一个对话框,在同一对话框一个datepicker和TimePicker? –

+0

像谷歌日历?当你选择日期和时间 –

+0

不,我只需要一周中的某一天和一个时间,没有日期。 – Jarrette

回答

1

好吧,我觉得我明白了。我只是不喜欢这个解决方案,因为我在一周中使用的Spinner与timepicker的“主题”不匹配,所以看起来非常糟糕。

编辑:我改变了微调的布局,你可以在帖子底部看到它,现在看起来好多了。

DayTimePickerFragment.java

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    final View thisDialog = inflater.inflate(R.layout.picker_day_time, container, false); 

    Button btnDateTimeOK = (Button)thisDialog.findViewById(R.id.btnDateTimeOK); 
    Button btnDateTimeCancel = (Button)thisDialog.findViewById(R.id.btnDateTimeCancel); 
    final Spinner spinSelectedDay = (Spinner)thisDialog.findViewById(R.id.spinSelectedDay); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.spinner_item_day_picker, getResources().getStringArray(R.array.days_of_week)); 
    spinSelectedDay.setAdapter(adapter); 
    final TimePicker tpSelectedTime = (TimePicker)thisDialog.findViewById(R.id.tpSelectedTime); 

    btnDateTimeCancel.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      ActionBarActivity thisActivity = (ActionBarActivity) getActivity(); 
      getDialog().dismiss(); 
     } 
    }); 

    btnDateTimeOK.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      ActionBarActivity thisActivity = (ActionBarActivity) getActivity(); 
      String strTime = null, strDay = null, strHour = null, strMinute = null, strAM_PM = null; 

      strDay = ((String)spinSelectedDay.getSelectedItem()); 
      strMinute = tpSelectedTime.getCurrentMinute().toString(); 
      if (tpSelectedTime.getCurrentMinute() < 10){ 
       strMinute = "0"+strMinute; 
      } 
      if (tpSelectedTime.getCurrentHour() > 12){ 
       strHour = (tpSelectedTime.getCurrentHour() - 12)+""; 
       strAM_PM = "PM"; 
      }else if(tpSelectedTime.getCurrentHour() == 12){ 
       strHour = tpSelectedTime.getCurrentHour().toString(); 
       strAM_PM = "PM"; 
      }else if(tpSelectedTime.getCurrentHour() < 12){ 
       strHour = tpSelectedTime.getCurrentHour().toString(); 
       strAM_PM = "AM"; 
      } 
      if (strHour != null && strAM_PM != null){ 
       strTime = strHour + ":" + strMinute + " " + strAM_PM; 
      } 

      etTarget.setText(strDay + " " + strTime); 
      getDialog().dismiss(); 
     } 
    }); 

    return thisDialog; 
} 

picker_day_time.xml

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/linearLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center" 
     android:orientation="vertical" > 

     <Spinner android:id="@+id/spinSelectedDay" android:layout_width="fill_parent" android:layout_height="wrap_content"> 
     </Spinner> 

     <TimePicker android:id="@+id/tpSelectedTime" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" > 
     </TimePicker> 

     <LinearLayout android:layout_width="fill_parent" 
      android:layout_height="wrap_content" > 

      <Button android:id="@+id/btnDateTimeCancel" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" 
       android:text="@string/button_text_cancel" android:onClick="DateTimeClickCancel" /> 

      <Button android:id="@+id/btnDateTimeOK" android:layout_width="0dip" android:layout_height="wrap_content" 
       android:layout_weight="1" android:text="@string/button_text_ok" android:onClick="DateTimeClickOK" /> 
     </LinearLayout> 

    </LinearLayout> 

spinner_item_day_picker.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:text="Thursday" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:textSize="@dimen/text_size_x_large" android:padding="10dp" android:gravity="center"/> 
+3

你可以附上一张照片吗? – bubakazouba

2

我在一个对话框合并星期和时间选择的一天。

您可以检查出库here

首先创建一个监听器:

final SlideDayTimeListener listener = new SlideDayTimeListener() { 

    @Override 
    public void onDayTimeSet(int day, int hour, int minute) 
    { 
     // Do something with the day, hour and minute 
     // the user has selected. 
    } 

    @Override 
    public void onDayTimeCancel() 
    { 
     // The user has canceled the dialog. 
     // This override is optional. 
    } 
}; 

然后使用生成器来显示对话框:

new SlideDayTimePicker.Builder(getSupportFragmentManager()) 
    .setListener(listener) 
    .setInitialDay(1) 
    .setInitialHour(13) 
    .setInitialMinute(30) 
    .build() 
    .show(); 

希望你觉得它有用。

day of week and timepicker for android