এই টিউটোরিয়ালে আমরা শিখব কীভাবে AndroidManifest.xml-এ নির্দিষ্ট এক্টিভিটির জন্য আলাদা থিম সেট করা যায়, পুরো অ্যাপ্লিকেশনকে প্রভাবিত না করে।
প্রয়োজনীয় ধাপগুলো
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
Android Studio-তে File → New Project এ যান এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।
ধাপ ২: লেআউট ফাইল তৈরি করুন
res/layout/activity_main.xml ফাইলে নিচের কোড যোগ করুন:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
ধাপ ৩: মেইন এক্টিভিটি তৈরি করুন
src/MainActivity.java ফাইলে নিচের কোড যোগ করুন:
package app.com.sample;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
ধাপ ৪: ম্যানিফেস্টে এক্টিভিটি-লেভেল থিম সেট করুন
AndroidManifest.xml ফাইলে <activity> ট্যাগে android:theme অ্যাট্রিবিউট যোগ করুন:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:theme="@style/Theme.AppCompat.Dialog.MinWidth">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
বিভিন্ন বিল্ট-ইন থিম অপশন
| থিম | ব্যাখ্যা |
|---|---|
| @style/Theme.AppCompat.Dialog | স্ট্যান্ডার্ড ডায়লগ থিম |
| @style/Theme.AppCompat.Dialog.MinWidth | ন্যূনতম প্রস্থের ডায়লগ |
| @style/Theme.AppCompat.Dialog.Alert | আলার্ট ডায়লগ স্টাইল |
| @style/Theme.AppCompat.Light.Dialog | হালকা ব্যাকগ্রাউন্ড ডায়লগ |
| @style/Theme.AppCompat.NoActionBar | একশনবার ছাড়া ফুলস্ক্রিন |
| @style/Theme.AppCompat.Translucent | ট্রান্সপারেন্ট ব্যাকগ্রাউন্ড |
| @android:style/Theme.Translucent.NoTitleBar | সিস্টেম ট্রান্সলুসেন্ট থিম |
কাস্টম থিম তৈরি করা (styles.xml-এ)
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!-- কাস্টম এক্টিভিটি থিম -->
<style name="CustomActivityTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowBackground">@color/white</item>
<item name="android:windowIsTranslucent">false</item>
</style>
<!-- ডায়লগ থিম -->
<style name="CustomDialogTheme" parent="Theme.AppCompat.Dialog">
<item name="android:windowMinWidthMajor">90%</item>
<item name="android:windowMinWidthMinor">90%</item>
</style>
</resources>
প্রোগ্রাম্যাটিক্যালি থিম সেট করা
onCreate()-এ setContentView()-এর আগে কল করুন:
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.CustomActivityTheme); // অবশ্যই setContentView()-এর আগে
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
থিম ইনহেরিটেন্স ও ওভাররাইড
- Application থিম → সব এক্টিভিটির ডিফল্ট
- Activity থিম (Manifest) → Application থিম ওভাররাইড করে
- Programmatic setTheme() → Manifest থিম ওভাররাইড করে
- View:android:theme (XML) → এক্টিভিটি থিম ওভাররাইড করে (API 21+)
Material Components থিম (সুপারিশ করা)
<style name="CustomActivityTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryVariant">@color/colorPrimaryDark</item>
<item name="colorOnPrimary">@color/white</item>
<item name="colorSecondary">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
</style>
সারাংশ
Manifest-এ <activity android:theme="@style/YourTheme"> ব্যবহার করুন নির্দিষ্ট এক্টিভিটির জন্য থিম সেট করতে। কাস্টম থিম styles.xml-এ সংজ্ঞায়িত করুন। setTheme() অবশ্যই setContentView()-এর আগে কল করতে হবে।