অ্যান্ড্রয়েড একশনবার টাইটেল ট্রাঙ্কেশন (Truncation) যাচাই
এই টিউটোরিয়ালে শিখব কিভাবে `isTitleTruncated()` মেথড ব্যবহার করে একশনবারের টাইটেল প্রস্থের চেয়ে বড় হয়ে এলিপসিস (...) দিয়ে কাটা হয়েছে কিনা তা যাচাই করতে হয়। এটি রেসপন্সিভ UI ডিজাইনের জন্য উপযোগী।
প্রয়োজনীয় ধাপসমূহ
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
Android Studio-তে File → New Project নির্বাচন করে প্রজেক্ট তৈরি করুন।
ধাপ ২: লেআউট ফাইল
res/layout/activity_main.xml ফাইলে:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:gravity="center"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/text"
android:textSize="30sp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
ধাপ ৩: জাভা কোড
src/MainActivity.java ফাইলে:
package com.example.myapplication;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.text);
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// লম্বা টাইটেল সেট করুন ট্রাঙ্কেশন টেস্টের জন্য
getSupportActionBar().setTitle("এটি একটি খুব লম্বা টাইটেল যা স্ক্রিনের প্রস্থ অতিক্রম করবে");
getSupportActionBar().setSubtitle("সাইরাম");
// টাইটেল ট্রাঙ্কেট হয়েছে কিনা যাচাই
boolean isTruncated = getSupportActionBar().isTitleTruncated();
textView.setText("টাইটেল ট্রাঙ্কেট হয়েছে: " + isTruncated);
} else {
textView.setText("একশনবার উপলব্ধ নেই");
}
}
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
if (menuItem.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(menuItem);
}
}
isTitleTruncated() মেথড
- রিটার্ন: true যদি টাইটেল টেক্সট একশনবার প্রস্থের চেয়ে বড় হয়ে কাটা হয়
- false: টাইটেল পুরো দেখায়
- উপযোগিতা: ডাইনামিক টাইটেলের জন্য লেআউট অ্যাডজাস্টমেন্ট
ট্রাঙ্কেশন হ্যান্ডলিং কৌশল
// ট্রাঙ্কেট হলে সংক্ষিপ্ত টাইটেল দেখান
if (getSupportActionBar().isTitleTruncated()) {
getSupportActionBar().setTitle("সংক্ষিপ্ত টাইটেল...");
}
// বা টুলবার-এ কাস্টম ভিউ ব্যবহার করুন
Toolbar toolbar = findViewById(R.id.toolbar);
TextView customTitle = new TextView(this);
customTitle.setText("পুরো লম্বা টাইটেল কখনও কাটা হবে না");
customTitle.setEllipsize(TextUtils.TruncateAt.END);
customTitle.setSingleLine(true);
toolbar.addView(customTitle);
XML-এ টাইটেল ট্রাঙ্কেশন কন্ট্রোল
styles.xml-এ:
<style name="CustomActionBar" parent="Widget.AppCompat.ActionBar">
<item name="titleTextStyle">@style/CustomTitleText</item>
</style>
<style name="CustomTitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
<item name="android:maxLines">1</item>
<item name="android:ellipsize">end</item>
</style>
অ্যাপ্লিকেশন চালানো
রান করলে লম্বা টাইটেলের কারণে "টাইটেল ট্রাঙ্কেট হয়েছে: true" দেখাবে। ছোট টাইটেল দিলে false দেখাবে।
লক্ষ্য করুন
- ল্যান্ডস্কেপ মোডে ট্রাঙ্কেশন কম হয় (প্রস্থ বেশি)
- হোম-এাজ-আপ বাটন (ব্যাক অ্যারো) থাকলে টাইটেলের জন্য জায়গা কমে যায়
- টুলবার (Toolbar) ব্যবহার করলে আরও নিয়ন্ত্রণ পাওয়া যায়
- API 24+ এ `isTitleTruncated()` কাজ করে