Android-এ স্টাইল ও থিম আপনাকে UI স্ট্রাকচার ও আচরণ থেকে আপনার অ্যাপ ডিজাইনের বিবরণ আলাদা করতে দেয়, ওয়েব ডিজাইনে স্টাইলশিটের মতোই।
স্টাইল হল অ্যাট্রিবিউটের একটি সংগ্রহ যা একটি
View-এর চেহারা নির্দিষ্ট করে। স্টাইল থেকে ফন্টের রঙ, ফন্টের সাইজ, ব্যাকগ্রাউন্ডের রঙ এবং আরও অনেক কিছুর মতো অ্যাট্রিবিউট নির্দিষ্ট করা যেতে পারে।
থিম হল অ্যাট্রিবিউটের একটি সংগ্রহ যা সম্পূর্ণ অ্যাপ, অ্যাক্টিভিটি বা ভিউ হায়ারার্কিতে প্রয়োগ করা হয়—শুধু কোনও একটি ভিউতে নয়। আপনি কোনও থিম প্রয়োগ করলে, অ্যাপ বা অ্যাক্টিভিটির প্রতিটি ভিউতে থিমের প্রতিটি অ্যাট্রিবিউট প্রয়োগ করা হয় যা এটি সাপোর্ট করে। এছাড়াও, থিম স্ট্যাটাস বার ও উইন্ডো ব্যাকগ্রাউন্ডের মতো নন-ভিউ এলিমেন্টে স্টাইল প্রয়োগ করতে পারে।
স্টাইল ও থিম res/values/-এর
স্টাইল রিসোর্স ফাইলে
ঘোষণা করা হয়, সাধারণত যার নাম styles.xml।
ছবি ১. একই অ্যাক্টিভিটিতে দুটি থিম প্রয়োগ করা হয়েছে:
Theme.AppCompat (বাঁদিকে) এবং Theme.AppCompat.Light (ডানদিকে)।
থিম বনাম স্টাইল
থিম ও স্টাইলের মধ্যে অনেক মিল থাকলেও, সেগুলি আলাদা আলাদা উদ্দেশ্যে ব্যবহার করা হয়। থিম ও স্টাইলের একই মৌলিক স্ট্রাকচার আছে—একটি কী-ভ্যালু পেয়ার যা রিসোর্স-এর সাথে অ্যাট্রিবিউট ম্যাপ করে।
স্টাইল নির্দিষ্ট ধরনের ভিউয়ের জন্য অ্যাট্রিবিউট নির্দিষ্ট করে। যেমন, একটি স্টাইল কোনও বোতামের অ্যাট্রিবিউট নির্দিষ্ট করতে পারে। স্টাইলে উল্লেখ করা প্রতিটি অ্যাট্রিবিউট আপনি লেআউট ফাইলে সেট করতে পারবেন। কোনও স্টাইলে সব অ্যাট্রিবিউট এক্সট্র্যাক্ট করলে, একাধিক উইজেট জুড়ে সেগুলি ব্যবহার ও ম্যানেজ করা সহজ হয়।
থিম হল নামযুক্ত রিসোর্সের একটি সংগ্রহ যা স্টাইল, লেআউট, উইজেট ইত্যাদির মাধ্যমে রেফারেন্স করা যেতে পারে। থিম Android রিসোর্সে colorPrimary-এর মতো শব্দার্থিক নাম অ্যাসাইন করে।
স্টাইল ও থিম একসাথে কাজ করার জন্য তৈরি করা হয়েছে। যেমন, আপনার এমন কোনও স্টাইল থাকতে পারে যা নির্দিষ্ট করে যে
একটি বোতামের একটি অংশ হল colorPrimary এবং অন্য অংশটি হল
colorSecondary। থিমেই এইসব রঙের আসল সংজ্ঞা দেওয়া আছে। ডিভাইস
নাইট মোডে গেলে, আপনার অ্যাপ "লাইট" থিম থেকে "ডার্ক" থিমে পরিবর্তন করতে পারে,
সেইসব রিসোর্সের নামের ভ্যালু পরিবর্তন করে। আপনাকে স্টাইল পরিবর্তন করতে হবে না, কারণ
স্টাইলগুলি শব্দার্থিক নাম ব্যবহার করছে এবং নির্দিষ্ট রঙের সংজ্ঞা নয়।
থিম ও স্টাইল কীভাবে একসাথে কাজ করে সেই সম্পর্কে আরও জানতে, Android স্টাইলিং: থিম বনাম স্টাইল ব্লগ পোস্টটি দেখুন।
স্টাইল তৈরি ও প্রয়োগ করা
নতুন স্টাইল তৈরি করতে, আপনার প্রোজেক্টের 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 অ্যাট্রিবিউটের মাধ্যমে
আপনি যে স্টাইল বাড়াতে চান তা নির্দিষ্ট করুন। তারপর আপনি উত্তরাধিকার সূত্রে প্রাপ্ত স্টাইল অ্যাট্রিবিউট
ওভাররাইড করে নতুন অ্যাট্রিবিউট যোগ করতে পারবেন।
যেমন, আপনি Android প্ল্যাটফর্মের ডিফল্ট টেক্সট অ্যাপিয়ারেন্স ইনহেরিট করতে পারেন এবং এটি এইভাবে পরিবর্তন করতে পারেন:
<style name="GreenText" parent="@android:style/TextAppearance"> <item name="android:textColor">#00FF00</item> </style>
তবে, Android সাপোর্ট লাইব্রেরি থেকে আপনার মূল অ্যাপ স্টাইল সবসময় ইনহেরিট করুন। সাপোর্ট লাইব্রেরির স্টাইলগুলি প্রতিটি ভার্সনে উপলভ্য UI অ্যাট্রিবিউটের জন্য প্রতিটি স্টাইল অপ্টিমাইজ করে কম্প্যাটিবিলিটি প্রদান করে। সাপোর্ট লাইব্রেরি স্টাইলের নাম প্রায়ই প্ল্যাটফর্মের স্টাইলের নামের মতো হয়,
তবে এতে AppCompat অন্তর্ভুক্ত থাকে।
কোনও লাইব্রেরি বা আপনার নিজস্ব প্রোজেক্ট থেকে স্টাইল ইনহেরিট করতে, পূর্ববর্তী উদাহরণে দেখানো @android:style/ অংশ ছাড়া
প্যারেন্ট স্টাইলের নাম ঘোষণা করুন। যেমন,
নিচের উদাহরণটি সাপোর্ট লাইব্রেরি থেকে টেক্সট অ্যাপিয়ারেন্স স্টাইল ইনহেরিট করে:
<style name="GreenText" parent="TextAppearance.AppCompat"> <item name="android:textColor">#00FF00</item> </style>
এছাড়াও, আপনি প্ল্যাটফর্মের স্টাইল ছাড়া অন্যান্য স্টাইল ইনহেরিট করতে পারবেন। এর জন্য parent অ্যাট্রিবিউট ব্যবহার করার পরিবর্তে, ডট নোটেশন সহ স্টাইলের নাম এক্সটেন্ড করতে হবে। অর্থাৎ, আপনি যে স্টাইলটি ইনহেরিট করতে চান, সেটির নামের আগে আপনার স্টাইলের নাম লিখুন এবং দুটি নাম একটি ফুলস্টপ দিয়ে আলাদা করুন। আপনি
সাধারণত নিজের স্টাইল বাড়ানোর সময় এটি করেন, অন্য লাইব্রেরির স্টাইল নয়। যেমন,
নিচের স্টাইলটি পূর্ববর্তী উদাহরণের GreenText থেকে সব স্টাইল ইনহেরিট করে
এবং তারপরে টেক্সটের সাইজ বাড়ায়:
<style name="GreenText.Large"> <item name="android:textSize">22dp</item> </style>
আপনি আরও নাম চেইন করে যতবার খুশি ততবার এইভাবে স্টাইল ইনহেরিট করা চালিয়ে যেতে পারেন।
<item> ট্যাগের সাথে আপনি কোন কোন অ্যাট্রিবিউট ঘোষণা করতে পারবেন তা জানতে, বিভিন্ন ক্লাস রেফারেন্সে "XML
অ্যাট্রিবিউট" টেবিল দেখুন। সব ভিউ
মূল ক্লাস থেকে XML অ্যাট্রিবিউটView সাপোর্ট করে এবং অনেক ভিউ তাদের নিজস্ব বিশেষ অ্যাট্রিবিউট যোগ করে। যেমন, TextView XML অ্যাট্রিবিউটে
android:inputType
অ্যাট্রিবিউট অন্তর্ভুক্ত থাকে যা আপনি ইনপুট গ্রহণ করে এমন টেক্সট ভিউতে প্রয়োগ করতে পারেন, যেমন
EditText উইজেট।
থিম হিসেবে স্টাইল প্রয়োগ করা
আপনি যেভাবে স্টাইল তৈরি করেন ঠিক সেইভাবেই থিম তৈরি করতে পারবেন। পার্থক্য হল আপনি এটি কীভাবে প্রয়োগ করবেন:
ভিউতে style অ্যাট্রিবিউট সহ স্টাইল প্রয়োগ করার পরিবর্তে, আপনি AndroidManifest.xml ফাইলের <application> ট্যাগ বা <activity> ট্যাগে android:theme অ্যাট্রিবিউট সহ থিম প্রয়োগ করবেন।
যেমন, Android সাপোর্ট লাইব্রেরির মেটেরিয়াল ডিজাইন "ডার্ক" থিম কীভাবে পুরো অ্যাপে প্রয়োগ করবেন তা এখানে দেখানো হল:
<manifest ... > <application android:theme="@style/Theme.AppCompat" ... > </application> </manifest>
এবং শুধুমাত্র একটি অ্যাক্টিভিটিতে কীভাবে "লাইট" থিম প্রয়োগ করবেন তা এখানে দেওয়া হল:
<manifest ... > <application ... > <activity android:theme="@style/Theme.AppCompat.Light" ... > </activity> </application> </manifest>
অ্যাপ বা অ্যাক্টিভিটির প্রতিটি ভিউতে, প্রদত্ত থিমে সংজ্ঞায়িত স্টাইলগুলির মধ্যে থেকে এটি যে স্টাইলগুলি সমর্থন করে তা প্রয়োগ করে। কোনও ভিউ যদি স্টাইলে ঘোষিত অ্যাট্রিবিউটের মধ্যে শুধুমাত্র কিছু অ্যাট্রিবিউট সাপোর্ট করে, তাহলে এটি শুধুমাত্র সেই অ্যাট্রিবিউটগুলি প্রয়োগ করে এবং যেগুলি সাপোর্ট করে না সেগুলি উপেক্ষা করে।
Android 5.0 (API লেভেল ২১) এবং Android সাপোর্ট লাইব্রেরি v22.1 থেকে শুরু করে, আপনি লেআউট ফাইলে কোনও ভিউতে
android:theme অ্যাট্রিবিউটও নির্দিষ্ট করতে পারবেন। এটি সেই ভিউ এবং যেকোনও চাইল্ড ভিউয়ের জন্য থিম পরিবর্তন করে, যা আপনার ইন্টারফেসের একটি নির্দিষ্ট অংশে থিমের রঙের প্যালেট পরিবর্তন করার জন্য উপযোগী।
আগের উদাহরণে দেখানো হয়েছে যে কীভাবে Theme.AppCompat-এর মতো থিম প্রয়োগ করতে হয়, যা
Android সাপোর্ট লাইব্রেরি থেকে পাওয়া যায়। তবে, সাধারণত আপনি আপনার অ্যাপের ব্র্যান্ডের সাথে মানানসই করার জন্য থিমটি কাস্টমাইজ করতে চান। এটি করার সবচেয়ে ভাল উপায় হল, সহায়তা লাইব্রেরি থেকে এইসব স্টাইল এক্সটেন্ড করা এবং
কিছু অ্যাট্রিবিউট ওভাররাইড করা, যেমনটি নিম্নলিখিত বিভাগে বর্ণনা করা হয়েছে।
স্টাইল হায়ারার্কি
Android অ্যাপ জুড়ে অ্যাট্রিবিউট সেট করার জন্য Android বিভিন্ন উপায় প্রদান করে। যেমন, আপনি সরাসরি লেআউটে অ্যাট্রিবিউট সেট করতে, ভিউতে স্টাইল প্রয়োগ করতে, লেআউটে থিম প্রয়োগ করতে এবং এমনকি প্রোগ্রাম্যাটিক্যালি অ্যাট্রিবিউট সেট করতে পারবেন।
আপনার অ্যাপের স্টাইল কীভাবে করবেন তা বেছে নেওয়ার সময়, Android-এর স্টাইল হায়ারার্কির কথা মাথায় রাখুন। সাধারণত, সামঞ্জস্য বজায় রাখার জন্য যতটা সম্ভব থিম ও স্টাইল ব্যবহার করুন। আপনি একাধিক জায়গায় একই অ্যাট্রিবিউট উল্লেখ করলে, কোন অ্যাট্রিবিউট শেষ পর্যন্ত প্রয়োগ করা হবে তা নিম্নলিখিত তালিকা থেকে নির্ধারণ করা হয়। তালিকাটি সর্বোচ্চ থেকে সর্বনিম্ন অগ্রাধিকারের ক্রমে সাজানো হয়েছে।
TextView-থেকে প্রাপ্ত ক্লাসে টেক্সট স্প্যান ব্যবহার করে অক্ষর- বা অনুচ্ছেদ-লেভেল স্টাইলিং প্রয়োগ করা।- প্রোগ্রাম্যাটিক্যালি অ্যাট্রিবিউট প্রয়োগ করা।
- সরাসরি কোনও ভিউতে স্বতন্ত্র অ্যাট্রিবিউট প্রয়োগ করা।
- কোনও ভিউতে স্টাইল প্রয়োগ করা।
- ডিফল্ট স্টাইলিং।
- ভিউয়ের সংগ্রহ, কোনও অ্যাক্টিভিটি বা আপনার সম্পূর্ণ অ্যাপে থিম প্রয়োগ করা।
- নির্দিষ্ট ভিউ-ভিত্তিক স্টাইলিং প্রয়োগ করা, যেমন
TextView-এTextAppearanceসেট করা।
ছবি ২. span-এর স্টাইলিং textAppearance-এর স্টাইলিংকে ওভাররাইড করে।
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 প্যারাগ্রাফ লেভেলে নয়, ক্যারেক্টার লেভেলে কাজ করে, তাই
সম্পূর্ণ লেআউটকে প্রভাবিত করে এমন অ্যাট্রিবিউট কাজ করে না।
ডিফল্ট থিম কাস্টমাইজ করুন
Android Studio-এর সাহায্যে কোনও প্রোজেক্ট তৈরি করলে, এটি আপনার প্রোজেক্টের 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 অ্যাক্টিভিটি শুরু হওয়ার সময় ব্যবহার করার জন্য ট্রানজিশন অ্যানিমেশন নির্ধারণ করে। আরও বিবরণের জন্য, অ্যানিমেশন ব্যবহার করে
অ্যাক্টিভিটি শুরু করুন দেখুন।
Android সাপোর্ট লাইব্রেরি অন্যান্য অ্যাট্রিবিউটও প্রদান করে যা আপনি Theme.AppCompat থেকে এক্সটেন্ড করা থিম কাস্টমাইজ করতে ব্যবহার করতে পারেন, যেমন পূর্ববর্তী উদাহরণে দেখানো colorPrimary অ্যাট্রিবিউট। এগুলি
লাইব্রেরির attrs.xml ফাইল-এ সবচেয়ে ভালোভাবে দেখা যায়।
এছাড়াও, সহায়তা লাইব্রেরিতে বিভিন্ন থিম উপলভ্য আছে যেগুলি আপনি আগের উদাহরণে দেখানো থিমের পরিবর্তে
ব্যবহার করতে চাইতে পারেন। উপলভ্য থিম দেখার সেরা জায়গা হল
লাইব্রেরির themes.xml ফাইল।
ভার্সন-নির্দিষ্ট স্টাইল যোগ করুন
Android-এর নতুন ভার্সনে যদি এমন থিম অ্যাট্রিবিউট যোগ করা হয় যা আপনি ব্যবহার করতে চান, তাহলে পুরনো ভার্সনের সাথে মানানসই রেখেও
আপনি সেগুলি আপনার থিমে যোগ করতে পারবেন। আপনার শুধু আরেকটি styles.xml ফাইল লাগবে
যা values ডিরেক্টরিতে সেভ করা আছে এবং এতে
রিসোর্স ভার্সন
কোয়ালিফায়ার অন্তর্ভুক্ত আছে:
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-এ আপনার থিম সেগুলি ইনহেরিট করতে পারে। এর অর্থ হল, আপনি "বেস" থিম দিয়ে শুরু করে এবং তারপরে আপনার ভার্সন-নির্দিষ্ট স্টাইলে এটি প্রসারিত করে
স্টাইল ডুপ্লিকেট করা এড়াতে
পারবেন।
যেমন, Android 5.0 (API লেভেল 21) এবং তার পরবর্তী যেকোনও ভার্সনের জন্য উইন্ডো ট্রানজিশন ঘোষণা করতে, আপনাকে
নতুন অ্যাট্রিবিউট ব্যবহার করতে হবে। তাই, 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>
এছাড়াও, আপনি উইজেট স্টাইল এক্সটেন্ড করতে পারবেন, ঠিক যেমন অন্য যেকোনও স্টাইল এক্সটেন্ড করা, এবং তারপর আপনার লেআউট বা থিমে কাস্টম উইজেট স্টাইল প্রয়োগ করতে পারবেন।
অতিরিক্ত রিসোর্স
থিম ও স্টাইল সম্পর্কে আরও জানতে, নিম্নলিখিত অতিরিক্ত রিসোর্স দেখুন:
ব্লগ পোস্ট
- Android স্টাইলিং: থিম বনাম স্টাইল
- Android স্টাইলিং: সাধারণ থিম অ্যাট্রিবিউট
- Android স্টাইলিং: থিম অ্যাট্রিবিউট পছন্দ করুন