অ্যান্ড্রয়েড 5.0 এর জন্য ডেটপিকারের ডায়ালগের রঙ কীভাবে পরিবর্তন করবেন


111

অ্যান্ড্রয়েড 5.0 এর জন্য ডেটপিকারটি (এবং টাইমপিকারটিও) রঙের স্কিম পরিবর্তন করা সম্ভব?

আমি অ্যাকসেন্ট রঙগুলি সেট করার চেষ্টা করেছি, তবে এটি কার্যকর হয় না (উভয় সহ এবং বাইরে android:):

<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">@color/purple</item>

<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">@color/purple_tint</item>

<!-- colorAccent is used as the default value for colorControlActivated
     which is used to tint widgets -->
<item name="colorAccent">@color/purple_tint</item>

মূল থেকে: এখানে চিত্র বর্ণনা লিখুন

এই জাতীয় কিছু: এখানে চিত্র বর্ণনা লিখুন


আপনার অ্যাপ্লিকেশন থিম শৈলীতে আপনার রঙের উচ্চারণটি কোন রঙে সেট করা আছে
নীল

@ নীল আমি এখন পর্যন্ত স্টাইলিংয়ের জন্য যে কোডটি ব্যবহার করার চেষ্টা করেছি সেগুলি আমি যুক্ত করেছি।
ওয়ারপজিট

উত্তর:


322

পূর্ণ স্ক্রিনে নীলের পরামর্শের ফলাফলের কারণ DatePickerহ'ল পিতামাতার থিমের পছন্দ:

<!-- Theme.AppCompat.Light is not a dialog theme -->
<style name="DialogTheme" parent="**Theme.AppCompat.Light**">
    <item name="colorAccent">@color/blue_500</item>
</style>

তদতিরিক্ত, আপনি যদি এই রুটে যান, থিমটি তৈরি করার সময় আপনাকে থিমটি নির্দিষ্ট করতে হবে DatePickerDialog:

// R.style.DialogTheme
new DatePickerDialog(MainActivity.this, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        //DO SOMETHING
    }
}, 2015, 02, 26).show();

এটি আমার মতে ভাল নয়। স্টাইলিংটিকে জাভা থেকে বাইরে এবং স্টাইলস.এক্সএমএল / থিমস.এক্সএমএল ভিতরে রাখার চেষ্টা করা উচিত।

আমি একমত যে নীলের পরামর্শ, কিছুটা পরিবর্তন করে (পিতামাতার থিম পরিবর্তন করার জন্য Theme.Material.Light.Dialog) আপনাকে পছন্দসই ফলাফলটি দেবে। তবে, এখানে অন্য উপায়:

প্রথম পরিদর্শনকালে, আমরা এসে পৌঁছেছি datePickerStyleযাগুলি যেমন: headerBackground(আপনি কী পরিবর্তন করতে চাইছেন) dayOfWeekBackground, এবং কয়েকটি অন্যান্য পাঠ্য-বর্ণ এবং পাঠ্য শৈলীর সংজ্ঞা দেয়।

আপনার অ্যাপের থিমটিতে এই বৈশিষ্ট্যটি ওভাররাইড করা কাজ করবে না। DatePickerDialogবৈশিষ্ট্য দ্বারা নির্ধারিত একটি পৃথক থিম ব্যবহার করে datePickerDialogTheme। সুতরাং, আমাদের পরিবর্তনগুলি প্রভাবিত করার জন্য, আমাদের অবশ্যই একটি ওভারডেনের ভিতরে ওভাররাইডdatePickerStyledatePickerDialogTheme করতে হবে ।

এখানে আমরা যাচ্ছি:

datePickerDialogThemeআপনার অ্যাপের বেস থিমের ভিতরে ওভাররাইড করুন:

<style name="AppBaseTheme" parent="android:Theme.Material.Light">
    ....
    <item name="android:datePickerDialogTheme">@style/MyDatePickerDialogTheme</item>
</style>

নির্ধারণ করুন MyDatePickerDialogTheme। প্যারেন্ট থিমের পছন্দটি আপনার অ্যাপ্লিকেশনটির বেস থিমটি নির্ভর করবে: এটি হয় Theme.Material.Dialogবা হতে পারে Theme.Material.Light.Dialog:

<style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
    <item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
</style>

আমরা datePickerStyleশৈলীতে ওভাররাইড করেছি MyDatePickerStyle। পিতামাতার পছন্দটি আবার আপনার অ্যাপের বেস থিমটি নির্ভর করবে: হয় Widget.Material.DatePickerবা হয় Widget.Material.Light.DatePicker। আপনার প্রয়োজনীয়তা অনুসারে এটি সংজ্ঞায়িত করুন:

<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
    <item name="android:headerBackground">@color/chosen_header_bg_color</item>
</style>

বর্তমানে, আমরা কেবল ওভাররাইড করছি headerBackgroundযা ডিফল্টরূপে সেট করা আছে ?attr/colorAccent(এ কারণেই নীলের পরামর্শ ব্যাকগ্রাউন্ড পরিবর্তন করতে কাজ করে)। তবে কাস্টমাইজেশনের যথেষ্ট সম্ভাবনা রয়েছে:

dayOfWeekBackground
dayOfWeekTextAppearance
headerMonthTextAppearance
headerDayOfMonthTextAppearance
headerYearTextAppearance
headerSelectedTextColor
yearListItemTextAppearance
yearListSelectorColor
calendarTextColor
calendarSelectedTextColor

আপনি যদি এত বেশি নিয়ন্ত্রণ (কাস্টমাইজেশন) না চান তবে আপনার ওভাররাইড করার দরকার নেই datePickerStylecolorAccentবেশিরভাগ DatePicker'sরঙ নিয়ন্ত্রণ করে । সুতরাং, colorAccentভিতরে ভিতরে ওভাররাইডিংয়ের MyDatePickerDialogThemeকাজ করা উচিত:

<style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
    <item name="android:colorAccent">@color/date_picker_accent</item>

    <!-- No need to override 'datePickerStyle' -->
    <!-- <item name="android:datePickerStyle">@style/MyDatePickerStyle</item> -->
</style>

ওভাররাইডিং colorAccentআপনাকে পরিবর্তন OKCANCELপাঠ্যের রংগুলির অতিরিক্ত যুক্ত সুবিধা দেয় । খারাপ না.

এইভাবে আপনাকে DatePickerDialog'sকনস্ট্রাক্টরকে কোনও স্টাইলিং তথ্য সরবরাহ করতে হবে না । সবকিছু সঠিকভাবে ওয়্যার করা হয়েছে:

DatePickerDialog dpd = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

    }
 }, 2015, 5, 22);

 dpd.show();

8
এটি কীভাবে কাজ করে এবং কীভাবে এটি স্টাইলগুলিতে
বর্ধিত

দুর্দান্ত ব্যাখ্যা @ ভিকরাম কীভাবে আমরা ঠিক পরিবর্তন করতে পারি, পাঠ্যের রঙ বাতিল করতে পারি?
দিলিপ

1
@ ভিকরাম ক্যালেন্ডার -নির্বাচিত পাঠ্য রঙ পাওয়া যায় নি।
অখিলেশ ধর দুবে 14

7
অ্যান্ড্রয়েড <21 ডেটপিকারের জন্য পিছনে সামঞ্জস্য থাকা কি সম্ভব?
রক রক

1
@RoCk আপনি নিশ্চিত হতে পারছি না কি বলতে চাইছেন, কিন্তু আমি Android সংস্করণ 23 থেকে সংস্করণ 14. প্রকল্পের এ হোস্ট করা হয় ফিরে পোর্টের একটি লাইব্রেরি তারিখ ও সময় পিকার্স নির্মিত: https://github.com/vikramkakkar/SublimePicker
বিক্রম

68

একবার চেষ্টা করে দেখুন

কোড

new DatePickerDialog(MainActivity.this, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        //DO SOMETHING
    }
}, 2015, 02, 26).show();

আপনার স্টাইল.এক্সএমএল ফাইলে স্টাইল

সম্পাদনা - থিম.এপকম্প্যাট.লাইট.ডায়ালগের পরিবর্তিত থিম প্রস্তাবিত হিসাবে

<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorAccent">@color/blue_500</item>
</style>

2
হ্যাঁ এটি বেগুনি, তবে পূর্ণ স্ক্রিন :) তবে সম্ভবত আমি এটি কোনও খণ্ডের মধ্যে রাখলে এটি অন্তর্ভুক্ত থাকবে। আমি এর সাথে আবার খেলা শুরু করার আগে কোনও পরামর্শ?
ওয়ারপজিট

আমি আরও উপযুক্ত সমাধান খুঁজে পেতে পারি যা এটির পুরো স্ক্রিনে যাওয়ার কারণ না
নীল

9
এর parent="Theme.AppCompat.Light.Dialog"পরিবর্তে কেবল ব্যবহার করুনparent="Theme.AppCompat.Light"
চুপিক

@ নীলের উত্তরের জন্য ধন্যবাদ, আমাকে সঠিক দিকে নির্দেশ করেছেন এবং এটি সঠিকভাবে দ্রুত সমাধান তবে আমি একটি সমস্ত স্টাইল / থিমের পদ্ধতির সন্ধান
করছিলাম

অ্যান্ড্রয়েড on এ কাজ করছেন না, এটি সম্পূর্ণ স্ক্রিন এবং রঙ পরিবর্তন করা হয়নি
জেমশিত ইস্কেন্দরভ

16

একটি নতুন শৈলী তৈরি করুন

<!-- Theme.AppCompat.Light.Dialog -->
<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorAccent">@color/blue_500</item>
</style>

জাভা কোড:

মূল থিমটি এখানে মূল কী। আপনার রঙ চয়ন করুন

DatePickerDialog = new DatePickerDialog(context,R.style.DialogTheme,this,now.get(Calendar.YEAR),now.get(Calendar.MONTH),now.get(Calendar.DAY_OF_MONTH);

ফলাফল:

এখানে চিত্র বর্ণনা লিখুন


6

এই চেষ্টা, আমার জন্য কাজ

দুটি বিকল্প রাখুন, colorAccentএবংandroid:colorAccent

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
   ....
    <item name="android:dialogTheme">@style/AppTheme.DialogTheme</item>
    <item name="android:datePickerDialogTheme">@style/Dialog.Theme</item>
</style>

<style name="AppTheme.DialogTheme" parent="Theme.AppCompat.Light.Dialog">

<!-- Put the two options, colorAccent and android:colorAccent. -->
    <item name="colorAccent">@color/colorPrimary</item>
    <item name="android:colorPrimary">@color/colorPrimary</item>
    <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:colorAccent">@color/colorPrimary</item>
 </style>

এই উত্তরের জন্য v24 apis এবং তার বেশি above প্রয়োজন নেই
মাইকেল

3

কেবল উল্লেখ করার জন্য, আপনি এর android.R.style.Theme_DeviceDefault_Light_Dialogপরিবর্তে ডিফল্ট কোনও থিমও ব্যবহার করতে পারেন ।

new DatePickerDialog(MainActivity.this, android.R.style.Theme_DeviceDefault_Light_Dialog, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    //DO SOMETHING
    }
}, 2015, 02, 26).show();

1

আপনার থিম তৈরি হয়নি তা কেবল এটি আপনার ডায়ালগ তৈরির অবজেক্টে লিখুন

DatePickerDialog datePicker = new DatePickerDialog(getActivity(), AlertDialog.THEME_HOLO_LIGHT,this, mYear, mMonth, mDay);

এটি অনুসরণ করুন এটি আপনাকে সমস্ত ধরণের তারিখ চয়নকারী শৈলী দেবে যা এটি সত্যই কার্যকর

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


রত্নের মতো কাজ করে, ভাই!
স্যাম

সতর্কতা ডায়ালগ। THEME_HOLO_LIGHT অবনতি হয়েছে .. কাজ করছে না
যশ

1

আমার সমস্যা ছিল যে অ্যান্ড্রয়েডে API 24 এর জন্য স্ক্রিনে সময় পিকারের বোতামগুলি দেখা যায় নি। (API 21+) এটির মাধ্যমে সমাধান করা হয়েছে

<style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
            <item name="android:colorAccent">@color/colorPrimary2</item></style>

<style name="Theme" parent="BBaseTheme">
         <item name="android:datePickerDialogTheme">@style/MyDatePickerDialogTheme</item>
</style>

1
<style name="AppThemeDatePicker" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorAccent">@color/select2</item>
    <item name="android:colorAccent">@color/select2</item>
    <item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
</style>


<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
    <item name="android:headerBackground">@color/select2</item>
</style>

0

বছরের তালিকা আইটেমের পাঠ্য রঙ পরিবর্তনের জন্য (Android 5.0 এর জন্য বিশেষ)

আপনার তারিখ চয়নকারী ডায়ালগ স্টাইলে কেবল নির্দিষ্ট পাঠ্যের রঙ সেট করুন। কিছু কারণে পতাকা সেট yearListItemTextAppearanceকরা বছরের তালিকায় কোনও পরিবর্তন প্রতিফলিত করে না।

<item name="android:textColor">@android:color/black</item>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.