TextView-এ নির্দিষ্ট টেক্সট অংশকে ক্লিকযোগ্য করা
এই উদাহরণটি দেখায় কীভাবে SpannableString এবং ClickableSpan ব্যবহার করে TextView-এ নির্দিষ্ট শব্দ বা frase-কে ক্লিকযোগ্য করা যায়।
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
Android Studio-তে নতুন প্রজেক্ট তৈরি করুন।
ধাপ ২: লেআউট XML (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"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I want THIS and THIS to be CLICKED!"
android:layout_centerInParent="true"
android:textSize="16sp"
android:textStyle="bold|italic"/>
</RelativeLayout>
ধাপ ৩: MainActivity.java বাস্তবায়ন
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
String text = "I want THIS and THIS to be CLICKED";
SpannableString spannableString = new SpannableString(text);
// প্রথম "THIS" (index 7-11)
ClickableSpan clickableSpan1 = new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this, "THIS (প্রথম)", Toast.LENGTH_SHORT).show();
}
};
// দ্বিতীয় "THIS" (index 16-20)
ClickableSpan clickableSpan2 = new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this, "THIS (দ্বিতীয়)", Toast.LENGTH_SHORT).show();
}
};
// "CLICKED" শব্দ (index 27-34)
ClickableSpan clickableSpan3 = new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this, "CLICKED", Toast.LENGTH_SHORT).show();
}
};
// স্প্যান সেট করুন
spannableString.setSpan(clickableSpan1, 7, 11, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(clickableSpan2, 16, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(clickableSpan3, 27, 34, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
// লিংক মুভমেন্ট মেথড সেট করুন যাতে ক্লিক কাজ করে
textView.setMovementMethod(LinkMovementMethod.getInstance());
}
}
ধাপ ৪: AndroidManifest.xml
<?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">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
কীভাবে কাজ করে
SpannableStringটেক্সটে ফরম্যাটিং এবং ইন্টারঅ্যাক্টিভিটি যোগ করতে দেয়ClickableSpanনির্দিষ্ট টেক্সট রেঞ্জকে ক্লিকযোগ্য করেsetSpan(start, end, flags)দিয়ে শুরু এবং শেষ ইনডেক্স নির্ধারণ করা হয়LinkMovementMethodছাড়া ক্লিক ইভেন্ট ফায়ার হবে না
অ্যাপ্লিকেশন চালান
অ্যাপ রান করুন এবং TextView-এ "THIS" এবং "CLICKED" শব্দগুলোতে ক্লিক করুন। প্রতিটি ক্লিকে আলাদা টোস্ট মেসেজ দেখাবে।