web-dev-qa-db-ja.com

AndroidでDatePickerのスタイルを変更するにはどうすればよいですか?

Androidの日付/時刻の選択ダイアログのデフォルトの色を変更して、アプリのテーマと一致するようにします。 Googleで解決策を検索しましたが、解決策が見つかりませんでした。

私がやっていたことは、新しいスタイルを作成することでした:

  <style name="datepicker" parent="@Android:style/Widget.DeviceDefault.DatePicker">
    <!---TODO-->
    <item name="Android:focusedMonthDateColor">@Android:color/holo_red_dark</item>
</style>

日付選択ダイアログで利用可能な属性が何であるかわからない。誰かがその上にリンクを投稿できたら素晴らしいだろう

スタイルを追加した後、メインスタイルで次のように呼び出していました。

 <item name="Android:datePickerStyle">@style/datepicker</item>

残念ながら、これは私にはまったく機能しませんでした。

33
silverFoxA

これを試して。最も簡単で効率的な方法です

<style name="datepicker" parent="Theme.AppCompat.Light.Dialog">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primary_dark</item>
        <item name="colorAccent">@color/primary</item>
</style>
53
silverFoxA

こう呼ぶ

 button5.setOnClickListener(new View.OnClickListener() {

 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub

 DialogFragment dialogfragment = new DatePickerDialogTheme();

 dialogfragment.show(getFragmentManager(), "Theme");

 }
 });

public static class DatePickerDialogTheme extends DialogFragment implements DatePickerDialog.OnDateSetListener{

     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState){
     final Calendar calendar = Calendar.getInstance();
     int year = calendar.get(Calendar.YEAR);
     int month = calendar.get(Calendar.MONTH);
     int day = calendar.get(Calendar.DAY_OF_MONTH);

//for one

//for two 

 DatePickerDialog datepickerdialog = new DatePickerDialog(getActivity(),
 AlertDialog.THEME_DEVICE_DEFAULT_DARK,this,year,month,day);

//for three 
 DatePickerDialog datepickerdialog = new DatePickerDialog(getActivity(),
 AlertDialog.THEME_DEVICE_DEFAULT_LIGHT,this,year,month,day);

// for four

   DatePickerDialog datepickerdialog = new DatePickerDialog(getActivity(),
 AlertDialog.THEME_HOLO_DARK,this,year,month,day);

//for five

 DatePickerDialog datepickerdialog = new DatePickerDialog(getActivity(),
     AlertDialog.THEME_HOLO_LIGHT,this,year,month,day);

//for six

 DatePickerDialog datepickerdialog = new DatePickerDialog(getActivity(),
 AlertDialog.THEME_TRADITIONAL,this,year,month,day);


     return datepickerdialog;
     }

     public void onDateSet(DatePicker view, int year, int month, int day){

     TextView textview = (TextView)getActivity().findViewById(R.id.textView1);

     textview.setText(day + ":" + (month+1) + ":" + year);

     }
     }

これに従うと、すべてのタイプの日付ピッカースタイルが表示されます(これからコピー)

http://www.Android-examples.com/change-datepickerdialog-theme-in-Android-using-dialogfragment/

enter image description here

enter image description here

enter image description here

64

アプリケーションレベルでDatePicker色(カレンダーモード)を変更するには、以下のプロパティを定義します。

<style name="MyAppTheme" parent="Theme.AppCompat.Light">
    <item name="colorAccent">#ff6d00</item>
    <item name="colorControlActivated">#33691e</item>
    <item name="Android:selectableItemBackgroundBorderless">@color/colorPrimaryDark</item>
    <item name="colorControlHighlight">#d50000</item>
</style>

http://www.zoftino.com/Android-datepicker-example を参照してください。他のDatePickerカスタムスタイル

zoftino DatePicker examples

26
Arnav Rao
Calendar calendar = Calendar.getInstance();

DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), R.style.DatePickerDialogTheme, new DatePickerDialog.OnDateSetListener() {
  public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    Calendar newDate = Calendar.getInstance();
    newDate.set(year, monthOfYear, dayOfMonth);

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
    String date = simpleDateFormat.format(newDate.getTime());
  }
}, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));

datePickerDialog.show();

そして、このスタイルを使用します:

<style name="DatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog">
  <item name="colorAccent">@color/colorPrimary</item>
</style>
11
Vinit Yadav

AlertDialog.THEME属性は廃止されているため、DatePickerDialogを作成するときに、int themeResIdにこれらのパラメーターのいずれかを渡す必要があります。

  • Android.R.style.Theme_DeviceDefault_Dialog_Alert
  • Android.R.style.Theme_DeviceDefault_Light_Dialog_Alert
  • Android.R.style.Theme_Material_Light_Dialog_Alert
  • Android.R.style.Theme_Material_Dialog_Alert
3
Levon Petrosyan

(React Native; targetSdkVersion 22を使用しています)。カレンダーの日付選択ダイアログの外観を変更しようとしています。受け入れられた答えは私にはうまくいきませんでしたが、これはうまくいきました。このスニペットがあなたの一部を助けることを願っています。

<style name="CalendarDatePickerDialog"  parent="Theme.AppCompat.Light.Dialog">
    <item name="colorAccent">#6bf442</item>
    <item name="Android:textColorPrimary">#6bf442</item>
</style>
2
Nunchucks

新しいスタイルを作成する

<style name="my_dialog_theme" parent="ThemeOverlay.AppCompat.Dialog">
    <item name="colorAccent">@color/colorAccent</item>                   <!--header background-->
    <item name="Android:windowBackground">@color/colorPrimary</item>     <!--calendar background-->
    <item name="Android:colorControlActivated">@color/colorAccent</item> <!--selected day-->
    <item name="Android:textColorPrimary">@color/colorPrimaryText</item> <!--days of the month-->
    <item name="Android:textColorSecondary">@color/colorAccent</item>    <!--days of the week-->
</style>

次に、ダイアログを初期化します

Calendar mCalendar = new GregorianCalendar();
mCalendar.setTime(new Date());

new DatePickerDialog(mContext, R.style.my_dialog_theme, new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        //do something with the date
    }
}, mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH)).show();

結果: https://i.stack.imgur.com/zlMpg.png

0
theBeardedPilot