কম্পিউটার টিউটোরিয়াল

কোটলিন ব্যবহার করে অ্যান্ড্রয়েডে স্ট্রিং-এ সাবস্ক্রিপ্ট এবং সুপারস্ক্রিপ্ট যোগ করার পদ্ধতি

এই উদাহরণটি দেখায় কিভাবে কোটলিন এবং SpannableStringBuilder ব্যবহার করে একটি টেক্সট ভিউতে সাবস্ক্রিপ্ট (নিচের সূচক) এবং সুপারস্ক্রিপ্ট (উপরের সূচক) যোগ করা যায়। রাসায়নিক সুত্র বা গাণিতিক এক্সপ্রেশন দেখানোর জন্য এটি খুব কার্যকর।

প্রথম ধাপ: নতুন প্রজেক্ট তৈরি করুন

Android Studio-তে File → New Project এ যান এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।

দ্বিতীয় ধাপ: লেআউট XML ডিজাইন করুন

res/layout/activity_main.xml ফাইলে নিচের কোড যোগ করুন:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="Tutorials Point"
        android:textAlignment="center"
        android:textColor="@android:color/holo_green_dark"
        android:textSize="32sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:fontFamily="sans-serif-condensed"
        android:textAlignment="center"
        android:textColor="@android:color/background_dark"
        android:textSize="36sp"
        android:textStyle="bold" />

</RelativeLayout>

তৃতীয় ধাপ: MainActivity.kt তে স্প্যান লজিক লিখুন

src/MainActivity.kt ফাইলে নিচের কোড যোগ করুন:

import android.os.Bundle
import android.text.SpannableStringBuilder
import android.text.Spanned
import android.text.style.RelativeSizeSpan
import android.text.style.SubscriptSpan
import android.text.style.SuperscriptSpan
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    private lateinit var textView: TextView
    private lateinit var strText: String
    private lateinit var spannableStringBuilder: SpannableStringBuilder

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"

        textView = findViewById(R.id.textView)
        strText = "Test text to show SubscriptSpan X₂ and SuperscriptSpan Y⁵ example."
        spannableStringBuilder = SpannableStringBuilder(strText)

        val subscriptSpan = SubscriptSpan()
        val superscriptSpan = SuperscriptSpan()

        // "২" এর ইনডেক্স খুঁজে সাবস্ক্রিপ্ট অ্যাপ্লাই করুন
        val index2 = strText.indexOf("₂")
        if (index2 != -1) {
            spannableStringBuilder.setSpan(
                subscriptSpan,
                index2,
                index2 + 1,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
            )
            // সাইজ ছোট করুন
            showSmallSizeText(index2, 1)
        }

        // "⁵" এর ইনডেক্স খুঁজে সুপারস্ক্রিপ্ট অ্যাপ্লাই করুন
        val index5 = strText.indexOf("⁵")
        if (index5 != -1) {
            spannableStringBuilder.setSpan(
                superscriptSpan,
                index5,
                index5 + 1,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
            )
            // সাইজ ছোট করুন
            showSmallSizeText(index5, 1)
        }

        textView.text = spannableStringBuilder
    }

    private fun showSmallSizeText(start: Int, length: Int) {
        val relativeSizeSpan = RelativeSizeSpan(0.5f)
        spannableStringBuilder.setSpan(
            relativeSizeSpan,
            start,
            start + length,
            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
        )
    }
}

চতুর্থ ধাপ: ম্যানিফেস্ট ফাইল

androidManifest.xml ফাইলটি সাধারণ থাকবে।

গুরুত্বপূর্ণ নোট

  • মূল উদাহরণে "X2" এবং "Y5" ব্যবহার করা হয়েছিল, কিন্তু সাবস্ক্রিপ্ট/সুপারস্ক্রিপ্ট স্প্যান যেকোনো ক্যারেক্টারে কাজ করে। উপরের উদাহরণে ইউনিকোড সাবস্ক্রিপ্ট "₂" এবং সুপারস্ক্রিপ্ট "⁵" ব্যবহার করা হয়েছে যাতে দেখানোর সময় স্পষ্ট হয়।
  • RelativeSizeSpan(0.5f) ব্যবহার করে সূচকগুলোর সাইজ মূল টেক্সটের অর্ধেক করা হয়েছে।
  • HTML-এ <sub> এবং <sup> ট্যাগ ব্যবহার করেও এই ইফেক্ট পাওয়া যায় Html.fromHtml() দিয়ে।

অ্যাপ্লিকেশন চালানোর নির্দেশনা

অ্যান্ড্রয়েড ডিভাইস সংযুক্ত করে Run করুন। টেক্সট ভিউতে "X₂" (সাবস্ক্রিপ্ট) এবং "Y⁵" (সুপারস্ক্রিপ্ট) সুন্দরভাবে ফরম্যাটেড দেখাবে।

  1. GSON লাইব্রেরি ব্যবহার করে ArrayList কে String-এ কনভার্ট করা

  2. অ্যান্ড্রয়েডে StringWriter.append() ব্যবহার

  3. Android-এ স্ট্রিং-এ Subscript ও Superscript ব্যবহার

  4. Kotlin ব্যবহার করে Android-এ ডান-বাম সুইপ জেসচার হ্যান্ডলিং