ওয়েব ডিজাইনের স্টাইলশীটের মতোই, অ্যান্ড্রয়েডের স্টাইল ও থিম আপনাকে অ্যাপ ডিজাইনের খুঁটিনাটি বিষয়গুলোকে ইউআই-এর কাঠামো ও আচরণ থেকে আলাদা করতে সাহায্য করে।
স্টাইল হলো অ্যাট্রিবিউটসমূহের একটি সংগ্রহ যা একটিমাত্র View এর বাহ্যিক রূপ নির্দিষ্ট করে। একটি স্টাইল ফন্ট কালার, ফন্ট সাইজ, ব্যাকগ্রাউন্ড কালার এবং আরও অনেক কিছুর মতো অ্যাট্রিবিউট নির্দিষ্ট করতে পারে।
থিম হলো অ্যাট্রিবিউটসমূহের একটি সংগ্রহ যা শুধুমাত্র কোনো একটি নির্দিষ্ট ভিউ-এর উপর নয়, বরং সম্পূর্ণ অ্যাপ, অ্যাক্টিভিটি বা ভিউ হায়ারার্কিতে প্রয়োগ করা হয়। যখন আপনি একটি থিম প্রয়োগ করেন, তখন অ্যাপ বা অ্যাক্টিভিটির প্রতিটি ভিউ সেই থিমের সমর্থিত প্রতিটি অ্যাট্রিবিউট প্রয়োগ করে। থিম স্ট্যাটাস বার এবং উইন্ডো ব্যাকগ্রাউন্ডের মতো নন-ভিউ এলিমেন্টগুলিতেও স্টাইল প্রয়োগ করতে পারে।
স্টাইল এবং থিমগুলো res/values/ ফোল্ডারের একটি স্টাইল রিসোর্স ফাইলে ঘোষণা করা হয়, যার নাম সাধারণত styles.xml থাকে।

চিত্র ১. একই অ্যাক্টিভিটিতে প্রয়োগ করা দুটি থিম: Theme.AppCompat (বামে) এবং Theme.AppCompat.Light (ডানে)।
থিম বনাম শৈলী
থিম এবং স্টাইলের মধ্যে অনেক মিল থাকলেও, এগুলো ভিন্ন ভিন্ন উদ্দেশ্যে ব্যবহৃত হয়। থিম এবং স্টাইলের মৌলিক কাঠামো একই—একটি কী-ভ্যালু পেয়ার যা অ্যাট্রিবিউটগুলোকে রিসোর্সের সাথে সংযুক্ত করে।
একটি স্টাইল কোনো নির্দিষ্ট ধরনের ভিউয়ের জন্য অ্যাট্রিবিউটসমূহ নির্দিষ্ট করে। উদাহরণস্বরূপ, একটি স্টাইল একটি বাটনের অ্যাট্রিবিউটসমূহ নির্দিষ্ট করতে পারে। একটি স্টাইলে আপনি যে প্রতিটি অ্যাট্রিবিউট নির্দিষ্ট করেন, তা লেআউট ফাইলেও সেট করা যায়। সমস্ত অ্যাট্রিবিউটকে একটি স্টাইলে নিয়ে আসলে একাধিক উইজেট জুড়ে সেগুলোর ব্যবহার ও রক্ষণাবেক্ষণ সহজ হয়।
একটি থিম হলো নামযুক্ত রিসোর্সসমূহের একটি সংগ্রহ, যেগুলোকে স্টাইল, লেআউট, উইজেট ইত্যাদি দ্বারা রেফারেন্স করা যায়। থিমগুলো অ্যান্ড্রয়েড রিসোর্সসমূহকে অর্থপূর্ণ নাম প্রদান করে, যেমন colorPrimary ।
স্টাইল এবং থিম একসাথে কাজ করার জন্যই তৈরি করা হয়েছে। উদাহরণস্বরূপ, আপনার এমন একটি স্টাইল থাকতে পারে যা নির্দিষ্ট করে যে একটি বাটনের এক অংশ হলো colorPrimary ' এবং অন্য অংশটি হলো colorSecondary '। এই রঙগুলোর প্রকৃত সংজ্ঞা থিমেই দেওয়া থাকে। যখন ডিভাইসটি নাইট মোডে যায়, তখন আপনার অ্যাপ তার 'light' থিম থেকে 'dark' থিমে পরিবর্তিত হতে পারে, যার ফলে ওই সমস্ত রিসোর্স নেমগুলোর মানও বদলে যায়। এক্ষেত্রে আপনার স্টাইল পরিবর্তন করার প্রয়োজন নেই, কারণ স্টাইলগুলো নির্দিষ্ট রঙের সংজ্ঞার পরিবর্তে অর্থগত নামগুলো ব্যবহার করে।
থিম এবং স্টাইল কীভাবে একসাথে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য, "Android styling: themes vs styles" ব্লগ পোস্টটি দেখুন।
একটি স্টাইল তৈরি করুন এবং প্রয়োগ করুন
নতুন স্টাইল তৈরি করতে, আপনার প্রোজেক্টের res/values/styles.xml ফাইলটি খুলুন। আপনি যে প্রতিটি স্টাইল তৈরি করতে চান, তার জন্য এই ধাপগুলো অনুসরণ করুন:
- একটি
<style>এলিমেন্ট যোগ করুন এবং এমন একটি নাম দিন যা স্টাইলটিকে অনন্যভাবে শনাক্ত করে। - আপনি যে প্রতিটি স্টাইল অ্যাট্রিবিউট সংজ্ঞায়িত করতে চান, তার জন্য একটি
<item>এলিমেন্ট যোগ করুন। প্রতিটি আইটেমের ভেতরেরnameএমন একটি অ্যাট্রিবিউটকে নির্দিষ্ট করে, যা আপনি অন্যথায় আপনার লেআউটে একটি XML অ্যাট্রিবিউট হিসেবে ব্যবহার করেন।<item>এলিমেন্টের ভেতরের ভ্যালুটি হলো সেই অ্যাট্রিবিউটের মান।
উদাহরণস্বরূপ, ধরুন আপনি নিম্নলিখিত স্টাইলটি সংজ্ঞায়িত করেছেন:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="GreenText" parent="TextAppearance.AppCompat"> <item name="android:textColor">#00FF00</item> </style> </resources>
আপনি নিম্নলিখিত উপায়ে একটি ভিউতে স্টাইল প্রয়োগ করতে পারেন:
<TextView style="@style/GreenText" ... />
স্টাইলে নির্দিষ্ট করা প্রতিটি অ্যাট্রিবিউট সেই ভিউতে প্রয়োগ করা হয়, যদি ভিউটি তা গ্রহণ করে। ভিউটি যেসব অ্যাট্রিবিউট গ্রহণ করে না, সেগুলোকে উপেক্ষা করে।
তবে, স্বতন্ত্র ভিউতে স্টাইল প্রয়োগ করার পরিবর্তে, আপনি সাধারণত আপনার সম্পূর্ণ অ্যাপ, অ্যাক্টিভিটি বা ভিউগুলোর সংগ্রহের জন্য একটি থিম হিসাবে স্টাইল প্রয়োগ করেন , যেমনটি এই গাইডের অন্য একটি বিভাগে বর্ণনা করা হয়েছে।
একটি স্টাইল প্রসারিত এবং কাস্টমাইজ করুন
নিজের স্টাইল তৈরি করার সময়, প্ল্যাটফর্ম UI স্টাইলের সাথে সামঞ্জস্য বজায় রাখতে সর্বদা ফ্রেমওয়ার্ক বা সাপোর্ট লাইব্রেরি থেকে একটি বিদ্যমান স্টাইল এক্সটেন্ড করুন। একটি স্টাইল এক্সটেন্ড করতে, parent অ্যাট্রিবিউটের মাধ্যমে আপনি যে স্টাইলটি এক্সটেন্ড করতে চান তা নির্দিষ্ট করুন। এরপর আপনি উত্তরাধিকারসূত্রে প্রাপ্ত স্টাইল অ্যাট্রিবিউটগুলো ওভাররাইড করতে এবং নতুন অ্যাট্রিবিউট যোগ করতে পারবেন।
উদাহরণস্বরূপ, আপনি অ্যান্ড্রয়েড প্ল্যাটফর্মের ডিফল্ট টেক্সট চেহারাটি গ্রহণ করে নিম্নলিখিতভাবে পরিবর্তন করতে পারেন:
<style name="GreenText" parent="@android:style/TextAppearance"> <item name="android:textColor">#00FF00</item> </style>
তবে, সর্বদা আপনার কোর অ্যাপের স্টাইলগুলো অ্যান্ড্রয়েড সাপোর্ট লাইব্রেরি থেকে ইনহেরিট করুন। সাপোর্ট লাইব্রেরির স্টাইলগুলো প্রতিটি সংস্করণে উপলব্ধ UI অ্যাট্রিবিউটগুলোর জন্য অপ্টিমাইজ করে সামঞ্জস্যতা প্রদান করে। সাপোর্ট লাইব্রেরির স্টাইলগুলোর নাম প্রায়শই প্ল্যাটফর্মের স্টাইলের মতোই হয়, তবে এতে AppCompat অন্তর্ভুক্ত থাকে।
কোনো লাইব্রেরি বা আপনার নিজের প্রজেক্ট থেকে স্টাইল ইনহেরিট করতে, পূর্ববর্তী উদাহরণে দেখানো @android:style/ অংশটি ছাড়া প্যারেন্ট স্টাইলের নামটি ডিক্লেয়ার করুন। উদাহরণস্বরূপ, নিম্নলিখিত উদাহরণটি সাপোর্ট লাইব্রেরি থেকে টেক্সট অ্যাপিয়ারেন্স স্টাইল ইনহেরিট করে:
<style name="GreenText" parent="TextAppearance.AppCompat"> <item name="android:textColor">#00FF00</item> </style>
parent অ্যাট্রিবিউট ব্যবহার না করে, কোনো স্টাইলের নামের সাথে ডট চিহ্ন (dot notation) জুড়ে দিয়েও আপনি প্ল্যাটফর্মের স্টাইলগুলো ছাড়া অন্য স্টাইল ইনহেরিট করতে পারেন। অর্থাৎ, আপনার স্টাইলের নামের আগে যে স্টাইলটি ইনহেরিট করতে চান তার নাম একটি পিরিয়ড (period) দিয়ে যুক্ত করুন। সাধারণত, আপনি কেবল নিজের স্টাইল এক্সটেন্ড করার সময়ই এটি করেন, অন্য লাইব্রেরির স্টাইলের ক্ষেত্রে নয়। উদাহরণস্বরূপ, নিচের স্টাইলটি পূর্ববর্তী উদাহরণের GreenText থেকে সমস্ত স্টাইল ইনহেরিট করে এবং তারপর টেক্সটের আকার বাড়িয়ে দেয়:
<style name="GreenText.Large"> <item name="android:textSize">22dp</item> </style>
আপনি আরও নাম যুক্ত করে যতবার খুশি এইভাবে স্টাইল উত্তরাধিকারসূত্রে পাওয়া চালিয়ে যেতে পারেন।
একটি <item> ট্যাগের সাথে আপনি কোন অ্যাট্রিবিউটগুলো ঘোষণা করতে পারেন তা জানতে, বিভিন্ন ক্লাস রেফারেন্সে থাকা "XML অ্যাট্রিবিউট" টেবিলটি দেখুন। সমস্ত ভিউ বেস View ক্লাস থেকে XML অ্যাট্রিবিউট সমর্থন করে, এবং অনেক ভিউ তাদের নিজস্ব বিশেষ অ্যাট্রিবিউট যোগ করে। উদাহরণস্বরূপ, TextView XML অ্যাট্রিবিউটের মধ্যে android:inputType অ্যাট্রিবিউটটি রয়েছে, যা আপনি ইনপুট গ্রহণকারী একটি টেক্সট ভিউতে প্রয়োগ করতে পারেন, যেমন একটি EditText উইজেট।
একটি স্টাইলকে থিম হিসেবে প্রয়োগ করুন
আপনি স্টাইল তৈরি করার মতোই একটি থিম তৈরি করতে পারেন। পার্থক্যটি হলো এটি প্রয়োগ করার পদ্ধতিতে: কোনো ভিউ-তে style অ্যাট্রিবিউট দিয়ে স্টাইল প্রয়োগ করার পরিবর্তে, AndroidManifest.xml ফাইলের <application> ট্যাগ অথবা <activity> ট্যাগে android:theme অ্যাট্রিবিউট দিয়ে থিম প্রয়োগ করতে হয়।
উদাহরণস্বরূপ, পুরো অ্যাপটিতে অ্যান্ড্রয়েড সাপোর্ট লাইব্রেরির ম্যাটেরিয়াল ডিজাইন 'ডার্ক' থিমটি প্রয়োগ করার পদ্ধতি নিচে দেওয়া হলো:
<manifest ... > <application android:theme="@style/Theme.AppCompat" ... > </application> </manifest>
আর এখানে দেখানো হলো কীভাবে শুধুমাত্র একটি অ্যাক্টিভিটিতে 'লাইট' থিমটি প্রয়োগ করতে হয়:
<manifest ... > <application ... > <activity android:theme="@style/Theme.AppCompat.Light" ... > </activity> </application> </manifest>
অ্যাপ বা অ্যাক্টিভিটির প্রতিটি ভিউ প্রদত্ত থিমে সংজ্ঞায়িত স্টাইলগুলো থেকে তার সমর্থিত স্টাইলগুলো প্রয়োগ করে। যদি কোনো ভিউ স্টাইলে ঘোষিত অ্যাট্রিবিউটগুলোর মধ্যে কেবল কয়েকটি সমর্থন করে, তবে এটি শুধু সেই অ্যাট্রিবিউটগুলোই প্রয়োগ করে এবং যেগুলো সমর্থন করে না সেগুলোকে উপেক্ষা করে।
অ্যান্ড্রয়েড ৫.০ (এপিআই লেভেল ২১) এবং অ্যান্ড্রয়েড সাপোর্ট লাইব্রেরি ভি২২.১ থেকে শুরু করে, আপনি আপনার লেআউট ফাইলের কোনো ভিউতে android:theme অ্যাট্রিবিউটটিও নির্দিষ্ট করে দিতে পারেন। এটি সেই ভিউ এবং তার যেকোনো চাইল্ড ভিউয়ের থিম পরিবর্তন করে, যা আপনার ইন্টারফেসের কোনো নির্দিষ্ট অংশের থিম কালার প্যালেট বদলানোর জন্য উপযোগী।
পূর্ববর্তী উদাহরণগুলিতে দেখানো হয়েছে কীভাবে অ্যান্ড্রয়েড সাপোর্ট লাইব্রেরি দ্বারা সরবরাহকৃত Theme.AppCompat এর মতো একটি থিম প্রয়োগ করতে হয়। তবে, সাধারণত আপনি আপনার অ্যাপের ব্র্যান্ডের সাথে মানানসই করার জন্য থিমটি কাস্টমাইজ করতে চান। এটি করার সর্বোত্তম উপায় হলো সাপোর্ট লাইব্রেরি থেকে এই স্টাইলগুলিকে এক্সটেন্ড করা এবং কিছু অ্যাট্রিবিউট ওভাররাইড করা, যেমনটি পরবর্তী বিভাগে বর্ণনা করা হয়েছে।
শৈলী শ্রেণিবিন্যাস
আপনার অ্যান্ড্রয়েড অ্যাপ জুড়ে অ্যাট্রিবিউট সেট করার জন্য অ্যান্ড্রয়েড বিভিন্ন উপায় প্রদান করে। উদাহরণস্বরূপ, আপনি সরাসরি একটি লেআউটে অ্যাট্রিবিউট সেট করতে পারেন, একটি ভিউতে স্টাইল প্রয়োগ করতে পারেন, একটি লেআউটে থিম প্রয়োগ করতে পারেন, এবং এমনকি প্রোগ্রাম্যাটিকভাবেও অ্যাট্রিবিউট সেট করতে পারেন।
আপনার অ্যাপের স্টাইল বেছে নেওয়ার সময়, অ্যান্ড্রয়েডের স্টাইল ক্রমবিন্যাস সম্পর্কে সচেতন থাকুন। সামঞ্জস্য বজায় রাখার জন্য, সাধারণত যতটা সম্ভব থিম এবং স্টাইল ব্যবহার করুন। আপনি যদি একাধিক জায়গায় একই অ্যাট্রিবিউট উল্লেখ করেন, তাহলে নিম্নলিখিত তালিকাটি নির্ধারণ করে যে শেষ পর্যন্ত কোন অ্যাট্রিবিউটগুলো প্রয়োগ করা হবে। তালিকাটি সর্বোচ্চ অগ্রাধিকার থেকে সর্বনিম্ন অগ্রাধিকার অনুসারে সাজানো হয়েছে।
-
TextViewথেকে উদ্ভূত ক্লাসগুলিতে টেক্সট স্প্যান ব্যবহার করে অক্ষর বা অনুচ্ছেদ স্তরের স্টাইলিং প্রয়োগ করা। - প্রোগ্রামের মাধ্যমে অ্যাট্রিবিউট প্রয়োগ করা।
- একটি ভিউতে সরাসরি স্বতন্ত্র অ্যাট্রিবিউট প্রয়োগ করা।
- কোনো ভিউতে স্টাইল প্রয়োগ করা।
- ডিফল্ট স্টাইলিং।
- একাধিক ভিউ, একটি অ্যাক্টিভিটি বা আপনার সম্পূর্ণ অ্যাপে থিম প্রয়োগ করা।
- নির্দিষ্ট ভিউ-ভিত্তিক স্টাইলিং প্রয়োগ করা, যেমন একটি
TextViewতেTextAppearanceসেট করা।

চিত্র ২. span স্টাইলিং, textAppearance স্টাইলিংকে ওভাররাইড করে।
টেক্সট অ্যাপিয়ারেন্স
স্টাইলের একটি সীমাবদ্ধতা হলো, আপনি একটি View শুধুমাত্র একটি স্টাইল প্রয়োগ করতে পারেন। তবে, একটি TextView আপনি একটি TextAppearance অ্যাট্রিবিউটও নির্দিষ্ট করতে পারেন, যা স্টাইলের মতোই কাজ করে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
<TextView ... android:textAppearance="@android:style/TextAppearance.Material.Headline" android:text="This text is styled via textAppearance!" />
TextAppearance আপনাকে একটি View -এর স্টাইল অন্যান্য কাজে ব্যবহারের জন্য উন্মুক্ত রেখে, শুধুমাত্র টেক্সট-ভিত্তিক স্টাইলিং নির্ধারণ করার সুযোগ দেয়। তবে মনে রাখবেন, যদি আপনি সরাসরি View তে বা কোনো স্টাইলের মধ্যে কোনো টেক্সট অ্যাট্রিবিউট নির্ধারণ করেন, তাহলে সেই মানগুলো TextAppearance মানগুলোকে ওভাররাইড করে দেবে।
TextAppearance TextView এর দেওয়া স্টাইলিং অ্যাট্রিবিউটগুলোর একটি উপসেট সমর্থন করে। সম্পূর্ণ অ্যাট্রিবিউট তালিকার জন্য, TextAppearance দেখুন।
TextView কিছু সাধারণ অ্যাট্রিবিউট যা অন্তর্ভুক্ত নয়, সেগুলো হলো lineHeight[Multiplier|Extra] , lines , breakStrategy , এবং hyphenationFrequency । TextAppearance ক্যারেক্টার লেভেলে কাজ করে, প্যারাগ্রাফ লেভেলে নয়, তাই যেসব অ্যাট্রিবিউট পুরো লেআউটকে প্রভাবিত করে, সেগুলো সমর্থিত নয়।
ডিফল্ট থিম কাস্টমাইজ করুন
আপনি যখন অ্যান্ড্রয়েড স্টুডিও দিয়ে একটি প্রজেক্ট তৈরি করেন, তখন এটি ডিফল্টরূপে আপনার অ্যাপে একটি ম্যাটেরিয়াল ডিজাইন থিম প্রয়োগ করে, যা আপনার প্রজেক্টের styles.xml ফাইলে সংজ্ঞায়িত থাকে। এই AppTheme স্টাইলটি সাপোর্ট লাইব্রেরি থেকে একটি থিমকে এক্সটেন্ড করে এবং এতে অ্যাপ বার ও ফ্লোটিং অ্যাকশন বাটনের মতো গুরুত্বপূর্ণ UI এলিমেন্টগুলোতে ব্যবহৃত কালার অ্যাট্রিবিউটগুলোর জন্য ওভাররাইড অন্তর্ভুক্ত থাকে। তাই, আপনি প্রদত্ত কালারগুলো আপডেট করার মাধ্যমে দ্রুত আপনার অ্যাপের কালার ডিজাইন কাস্টমাইজ করতে পারেন।
উদাহরণস্বরূপ, আপনার styles.xml ফাইলটি দেখতে অনেকটা এইরকম:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
স্টাইল ভ্যালুগুলো আসলে অন্যান্য কালার রিসোর্সের রেফারেন্স, যা প্রজেক্টের res/values/colors.xml ফাইলে সংজ্ঞায়িত করা থাকে। রং পরিবর্তন করার জন্য এই ফাইলটিই এডিট করতে হয়। ডাইনামিক কালার এবং অতিরিক্ত কাস্টম কালারের মাধ্যমে ইউজার এক্সপেরিয়েন্স উন্নত করতে ম্যাটেরিয়াল ডিজাইন কালার ওভারভিউ দেখুন।
একবার আপনার রংগুলো জানা হয়ে গেলে, res/values/colors.xml ফাইলে মানগুলো আপডেট করুন:
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- Color for the app bar and other primary UI elements. --> <color name="colorPrimary">#3F51B5</color> <!-- A darker variant of the primary color, used for the status bar (on Android 5.0+) and contextual app bars. --> <color name="colorPrimaryDark">#303F9F</color> <!-- a secondary color for controls like checkboxes and text fields. --> <color name="colorAccent">#FF4081</color> </resources>
এরপর আপনি আপনার পছন্দমতো অন্য যেকোনো স্টাইল পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, আপনি অ্যাক্টিভিটির ব্যাকগ্রাউন্ড কালার নিম্নোক্তভাবে পরিবর্তন করতে পারেন:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> ... <item name="android:windowBackground">@color/activityBackground</item> </style>
আপনার থিমে ব্যবহারযোগ্য অ্যাট্রিবিউটগুলোর তালিকার জন্য, R.styleable.Theme এ থাকা অ্যাট্রিবিউটের সারণীটি দেখুন। আপনার লেআউটের ভিউগুলোর জন্য স্টাইল যোগ করার সময়, আপনি ভিউ ক্লাস রেফারেন্সের "XML অ্যাট্রিবিউট" সারণীটি দেখেও অ্যাট্রিবিউটগুলো খুঁজে নিতে পারেন। উদাহরণস্বরূপ, সমস্ত ভিউ বেস View ক্লাসের XML অ্যাট্রিবিউটগুলো সমর্থন করে।
বেশিরভাগ অ্যাট্রিবিউট নির্দিষ্ট ধরণের ভিউতে প্রয়োগ করা হয়, এবং কিছু অ্যাট্রিবিউট সমস্ত ভিউতে প্রযোজ্য। তবে, R.styleable.Theme এ তালিকাভুক্ত কিছু থিম অ্যাট্রিবিউট লেআউটের ভিউগুলিতে নয়, বরং অ্যাক্টিভিটি উইন্ডোতে প্রযোজ্য হয়। উদাহরণস্বরূপ, windowBackground উইন্ডোর ব্যাকগ্রাউন্ড পরিবর্তন করে এবং windowEnterTransition অ্যাক্টিভিটি শুরু হওয়ার সময় ব্যবহার করার জন্য একটি ট্রানজিশন অ্যানিমেশন নির্ধারণ করে। আরও বিস্তারিত জানতে, "অ্যানিমেশন ব্যবহার করে একটি অ্যাক্টিভিটি শুরু করুন" দেখুন।
অ্যান্ড্রয়েড সাপোর্ট লাইব্রেরিটি আরও কিছু অ্যাট্রিবিউট প্রদান করে যা আপনি Theme.AppCompat থেকে এক্সটেন্ড করা আপনার থিম কাস্টমাইজ করতে ব্যবহার করতে পারেন, যেমন পূর্ববর্তী উদাহরণে দেখানো colorPrimary অ্যাট্রিবিউট। এগুলি লাইব্রেরির attrs.xml ফাইলে সবচেয়ে ভালোভাবে দেখা যায়।
সাপোর্ট লাইব্রেরিতে আরও বিভিন্ন থিম পাওয়া যায়, যেগুলো আপনি পূর্ববর্তী উদাহরণে দেখানো থিমগুলোর পরিবর্তে ব্যবহার করতে চাইতে পারেন। উপলব্ধ থিমগুলো দেখার সেরা জায়গা হলো লাইব্রেরির themes.xml ফাইল ।
সংস্করণ-নির্দিষ্ট শৈলী যোগ করুন
অ্যান্ড্রয়েডের নতুন কোনো সংস্করণে যদি আপনার ব্যবহার করার মতো থিম অ্যাট্রিবিউট যোগ করা হয়, তবে আপনি পুরোনো সংস্করণগুলোর সাথে সামঞ্জস্য বজায় রেখেই সেগুলো আপনার থিমে যুক্ত করতে পারেন। এর জন্য আপনার শুধু values ' ডিরেক্টরিতে সেভ করা আরেকটি styles.xml ' ফাইল প্রয়োজন, যেটিতে ' resource version qualifier :' অন্তর্ভুক্ত থাকবে।
res/values/styles.xml # themes for all versions res/values-v21/styles.xml # themes for API level 21+ only
যেহেতু values/styles.xml ফাইলের স্টাইলগুলো সব ভার্সনের জন্য উপলব্ধ, values-v21/styles.xml এ থাকা আপনার থিমগুলো সেগুলো ইনহেরিট করতে পারে। এর মানে হলো, আপনি একটি "বেস" থিম দিয়ে শুরু করে এবং তারপর আপনার ভার্সন-নির্দিষ্ট স্টাইলগুলোতে সেটিকে এক্সটেন্ড করার মাধ্যমে স্টাইলের পুনরাবৃত্তি এড়াতে পারেন।
উদাহরণস্বরূপ, অ্যান্ড্রয়েড ৫.০ (এপিআই লেভেল ২১) এবং তার উচ্চতর সংস্করণের জন্য উইন্ডো ট্রানজিশন ঘোষণা করতে, আপনাকে নতুন অ্যাট্রিবিউট ব্যবহার করতে হবে। সুতরাং, res/values/styles.xml এ আপনার বেস থিমটি দেখতে এইরকম হতে পারে:
<resources> <!-- Base set of styles that apply to all versions. --> <style name="BaseAppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/primaryColor</item> <item name="colorPrimaryDark">@color/primaryTextColor</item> <item name="colorAccent">@color/secondaryColor</item> </style> <!-- Declare the theme name that's actually applied in the manifest file. --> <style name="AppTheme" parent="BaseAppTheme" /> </resources>
তারপর, res/values-v21/styles.xml ফাইলে ভার্সন-নির্দিষ্ট স্টাইলগুলো নিম্নরূপভাবে যোগ করুন:
<resources> <!-- extend the base theme to add styles available only with API level 21+ --> <style name="AppTheme" parent="BaseAppTheme"> <item name="android:windowActivityTransitions">true</item> <item name="android:windowEnterTransition">@android:transition/slide_right</item> <item name="android:windowExitTransition">@android:transition/slide_left</item> </style> </resources>
এখন আপনি আপনার ম্যানিফেস্ট ফাইলে AppTheme প্রয়োগ করতে পারেন, এবং সিস্টেম প্রতিটি সিস্টেম সংস্করণের জন্য উপলব্ধ স্টাইলগুলো নির্বাচন করবে।
বিভিন্ন ডিভাইসের জন্য বিকল্প রিসোর্স ব্যবহার সম্পর্কে আরও তথ্যের জন্য, ‘বিকল্প রিসোর্স সরবরাহ’ দেখুন।
উইজেট শৈলী কাস্টমাইজ করুন
ফ্রেমওয়ার্ক এবং সাপোর্ট লাইব্রেরির প্রতিটি উইজেটের একটি ডিফল্ট স্টাইল থাকে। উদাহরণস্বরূপ, যখন আপনি সাপোর্ট লাইব্রেরির কোনো থিম ব্যবহার করে আপনার অ্যাপকে স্টাইল করেন, তখন Button এর একটি ইনস্ট্যান্স Widget.AppCompat.Button স্টাইল ব্যবহার করে স্টাইল করা হয়। আপনি যদি কোনো বাটনে একটি ভিন্ন উইজেট স্টাইল প্রয়োগ করতে চান, তবে আপনার লেআউট ফাইলে style অ্যাট্রিবিউট ব্যবহার করে তা করতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত কোডটি লাইব্রেরির বর্ডারলেস বাটন স্টাইল প্রয়োগ করে:
<Button style="@style/Widget.AppCompat.Button.Borderless" ... />
যদি আপনি এই স্টাইলটি সমস্ত বোতামে প্রয়োগ করতে চান, তাহলে আপনার থিমের buttonStyle এ এটি নিম্নরূপভাবে ঘোষণা করতে পারেন:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="buttonStyle">@style/Widget.AppCompat.Button.Borderless</item> ... </style>
অন্যান্য যেকোনো স্টাইলের মতোই আপনি উইজেট স্টাইলও প্রসারিত করতে পারেন এবং তারপর আপনার লেআউট বা থিমে আপনার নিজস্ব উইজেট স্টাইল প্রয়োগ করতে পারেন।
অতিরিক্ত সম্পদ
থিম ও শৈলী সম্পর্কে আরও জানতে, নিম্নলিখিত অতিরিক্ত উৎসগুলো দেখুন:
ব্লগ পোস্ট
- অ্যান্ড্রয়েড স্টাইলিং: থিম বনাম স্টাইল
- অ্যান্ড্রয়েড স্টাইলিং: সাধারণ থিম অ্যাট্রিবিউট
- অ্যান্ড্রয়েড স্টাইলিং: থিম অ্যাট্রিবিউট পছন্দ করুন
