থিম.এপকম্প্যাট পুরো অ্যাপ্লিকেশনের জন্য গ্লোবাল থিম সেট করতে ব্যবহৃত হয়। থিম ওভারলে.অ্যাপকম্প্যাটটি নির্দিষ্ট মতামত, বিশেষত সরঞ্জামদণ্ডের জন্য সেই থিমটিকে ওভাররাইড (বা "ওভারলে") করতে ব্যবহৃত হয়।
কেন এটি প্রয়োজনীয় এটির জন্য একটি উদাহরণ দেখি।
অ্যাকশনবার সহ অ্যাপ্লিকেশন থিম
অ্যাকশনবারটি সাধারণত একটি অ্যাপে প্রদর্শিত হয়। আমি colorPrimary
মানটি সেট করে এটির রঙটি বেছে নিতে পারি । তবে থিম পরিবর্তন করা অ্যাকশনবারের পাঠ্যের রঙ পরিবর্তন করে।
<style name="AppTheme" parent="Theme.AppCompat">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
যেহেতু আমার প্রাথমিক রঙটি গা blue় নীল, তাই আমার সম্ভবত থিমগুলির মধ্যে একটি ব্যবহার করা উচিত যা অ্যাকশন বারে হালকা পাঠ্যের রঙ ব্যবহার করে কারণ কালো লেখাটি পড়া শক্ত।
অ্যাকশনবারটি লুকানো এবং একটি সরঞ্জামদণ্ড ব্যবহার করা
থিম.ম্যাটারিয়ালের চেয়ে থিম.অ্যাপকম্প্যাট ব্যবহারের সম্পূর্ণ বিষয়টি হ'ল আমরা Android এর পুরানো সংস্করণগুলিকে আমাদের উপাদান ডিজাইনের থিমটি ব্যবহার করার অনুমতি দিতে পারি। সমস্যাটি হচ্ছে Android এর পুরানো সংস্করণগুলি অ্যাকশনবারকে সমর্থন করে না। সুতরাং, ডকুমেন্টেশনটি অ্যাকশনবারটি লুকিয়ে রাখার এবং আপনার বিন্যাসে একটি সরঞ্জামদণ্ড যুক্ত করার পরামর্শ দেয়। অ্যাকশনবারটি আড়াল করতে আমাদের একটি NoActionBar
থিম ব্যবহার করতে হবে । নিচের চিত্রগুলি অ্যাকশনবার লুকিয়ে থাকা সহ টুলবারটি দেখায়।
তবে আমি যদি ডার্ক অ্যাকশনবারের সাথে হালকা থিমের মতো কিছু চাই? যেহেতু আমাকে NoActionBar ব্যবহার করতে হবে, এটি কোনও বিকল্প নয়।
অ্যাপ থিমটি ওভাররাইড করছে
থিমওভারলে এখানে আসে। আমি আমার সরঞ্জামদণ্ডের এক্সএমএল লেআউটে অন্ধকার অ্যাকশনবার থিমটি নির্দিষ্ট করতে পারি।
<android.support.v7.widget.Toolbar
...
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
এটি অবশেষে আমাদের যে প্রভাবটি চায় তা কার্যকর করতে দেয়। ডার্ক.অ্যাকশনবার থিমটি এই নির্দিষ্ট উপলক্ষে হালকা অ্যাপ্লিকেশন থিমটিকে ওভারলে করে।
- অ্যাপ থিম:
Theme.AppCompat.Light.NoActionBar
- সরঞ্জামদণ্ড থিম:
ThemeOverlay.AppCompat.Dark.ActionBar
আপনি যদি পপআপ মেনুটি হালকা হতে চান তবে আপনি এটি যুক্ত করতে পারেন:
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
আরও অধ্যয়ন
আমি পরীক্ষার মাধ্যমে এবং নিম্নলিখিত নিবন্ধগুলি পড়ার মাধ্যমে এটি শিখেছি।