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

Android-এ TextView-এ টেক্সট জাস্টিফাই (Justify) করা

অ্যান্ড্রয়েডে TextView-এ টেক্সট জাস্টিফাই (Justify) করার পদ্ধতি

এই উদাহরণটি দেখায় কিভাবে RecyclerView এবং কাস্টম আইটেম লেআউট ব্যবহার করে টেক্সট জাস্টিফাই করার.member Milwaukee But actually the example uses RecyclerView with multiple TextViews. True justification in Android TextView requires API 26+ (android:justificationMode="inter_word") or custom layout. This example demonstrates a list with title, year, author.

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

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

ধাপ ২: মেইন লেআউট (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:scrollbars="none" />

</RelativeLayout>

ধাপ ৩: লিস্ট আইটেম লেআউট (list_item.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="16dp">

    <TextView
        android:id="@+id/song_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="New Text"
        android:textSize="18sp"
        android:textStyle="bold"
        android:textColor="@color/colorPrimaryDark" />

    <TextView
        android:id="@+id/song_year"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/song_title"
        android:layout_alignLeft="@+id/song_title"
        android:layout_alignStart="@+id/song_title"
        android:layout_marginTop="20dp"
        android:text="New Text"
        android:textColor="#000" />

    <TextView
        android:id="@+id/song_author"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/song_year"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:text="New Text"
        android:textColor="#000" />

</RelativeLayout>

ধাপ ৪: ItemObject.java (ডেটা মডেল)

package com.app.sample;

public class ItemObject {
    private String songTitle;
    private String songYear;
    private String songAuthor;

    public ItemObject(String songTitle, String songYear, String songAuthor) {
        this.songTitle = songTitle;
        this.songYear = songYear;
        this.songAuthor = songAuthor;
    }

    public String getSongTitle() { return songTitle; }
    public String getSongYear() { return songYear; }
    public String getSongAuthor() { return songAuthor; }
}

ধাপ ৫: RecyclerViewAdapter.java

package com.app.sample;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolders> {

    private List<ItemObject> itemList;
    private Context context;

    public RecyclerViewAdapter(Context context, List<ItemObject> itemList) {
        this.itemList = itemList;
        this.context = context;
    }

    @Override
    public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) {
        View layoutView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.list_item, parent, false);
        return new RecyclerViewHolders(layoutView);
    }

    @Override
    public void onBindViewHolder(RecyclerViewHolders holder, int position) {
        ItemObject item = itemList.get(position);
        holder.songTitle.setText("Song Title: " + item.getSongTitle());
        holder.songYear.setText("Song Year: " + item.getSongYear());
        holder.songAuthor.setText("Song Author: " + item.getSongAuthor());
    }

    @Override
    public int getItemCount() {
        return itemList.size();
    }
}

ধাপ ৬: RecyclerViewHolders.java

package com.app.sample;

import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;

public class RecyclerViewHolders extends RecyclerView.ViewHolder implements View.OnClickListener {

    public TextView songTitle;
    public TextView songYear;
    public TextView songAuthor;
    private SparseBooleanArray selectedItems = new SparseBooleanArray();

    public RecyclerViewHolders(View itemView) {
        super(itemView);
        itemView.setOnClickListener(this);
        songTitle = itemView.findViewById(R.id.song_title);
        songYear = itemView.findViewById(R.id.song_year);
        songAuthor = itemView.findViewById(R.id.song_author);
    }

    @Override
    public void onClick(View view) {
        int pos = getAdapterPosition();
        if (selectedItems.get(pos, false)) {
            selectedItems.delete(pos);
            view.setSelected(false);
        } else {
            selectedItems.put(pos, true);
            view.setSelected(true);
        }
    }
}

ধাপ ৭: MainActivity.java

package com.app.sample;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private LinearLayoutManager layoutManager;
    private RecyclerViewAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.recycler_view);
        // recyclerView.addItemDecoration(new SimpleDividerItemDecoration(this)); // Optional

        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);

        List<ItemObject> posts = returnListItems();
        adapter = new RecyclerViewAdapter(this, posts);
        recyclerView.setAdapter(adapter);
    }

    private List<ItemObject> returnListItems() {
        List<ItemObject> items = new ArrayList<>();
        items.add(new ItemObject("Blank Space", "Taylor Swift", "2016"));
        items.add(new ItemObject("Uptown Funk", "Mark Ronson", "2016"));
        items.add(new ItemObject("Can't Feel My Face", "The Weeknd", "2016"));
        items.add(new ItemObject("Cheerleader", "OMI", "2016"));
        items.add(new ItemObject("What Do You Mean?", "Justin Bieber", "2016"));
        items.add(new ItemObject("Hello", "Adele", "2016"));
        return items;
    }
}

ধাপ ৮: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.app.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>

সত্যিকারের টেক্সট জাস্টিফিকেশন (API 26+)

যদি আপনি শুধু একটি TextView-এ জাস্টিফাইড টেক্সট চান, তবে API 26 (Android 8.0) বা তার উপরে নিচের অ্যাট্রিবিউট ব্যবহার করুন:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="আপনার বড় টেক্সট এখানে..."
    android:justificationMode="inter_word" />

অ্যাপটি চালান

ডিভাইস সংযুক্ত করে Run ক্লিক করুন। RecyclerView-এ গানের তালিকা দেখাবে।

Android-এ TextView-এ টেক্সট জাস্টিফাই (Justify) করা

  1. অ্যান্ড্রয়েডে ছবির উপরে টেক্সট আঁকানোর পদ্ধতি

  2. অ্যান্ড্রয়েডে ButterKnife লাইব্রেরি ব্যবহারের পদ্ধতি

  3. অ্যান্ড্রয়েডে JSON পার্স করার সহজ পদ্ধতি

  4. Android-এ TextView-এ টেক্সট জাস্টিফাই (Justify) করার পদ্ধতি