7

ユーザーが Android アクティビティで曜日 (月曜日) と時刻 (午後 1:00) を選択できるコントロールを作成したいと考えています。これに関する良い投稿を見つけることができませんでしたか?

4

3 に答える 3

3

わかりました、私はそれを理解したと思います。曜日に使用するスピナーがタイムピッカーの「テーマ」と一致しないため、このソリューションが気に入らないため、見た目が非常に悪くなります。

編集: 投稿の下部にあるスピナーのレイアウトを変更しました。見栄えが良くなりました。

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"/>
于 2014-02-05T17:43:25.387 に答える
2

1 つのダイアログで曜日と時間ピッカーを組み合わせました。

ライブラリはこちらからご覧いただけます

最初にリスナーを作成します。

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();

お役に立てば幸いです。

Androidの曜日とタイムピッカー

于 2015-02-04T01:01:26.260 に答える