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

Android-এ Java কোড থেকে Button-এর layout_weight ডাইনামিকভাবে সেট করা

LinearLayout.LayoutParams দিয়ে Weight ডাইনামিক সেট করা

Java কোড থেকে বাটন (বা যেকোনো ভিউ) এর layout_weight প্রোগ্রাম্যাটিকভাবে সেট করে লেআউটে যোগ করার পদ্ধতি।

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

Android Studio-তে নতুন প্রজেক্ট তৈরি করুন।

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:id="@+id/linearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:gravity="center"
    android:padding="4dp"
    tools:context=".MainActivity">
    <!-- বাটনগুলো Java-এ যোগ হবে -->
</LinearLayout>

ধাপ ৩: MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {
    LinearLayout linearLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        linearLayout = findViewById(R.id.linearLayout);
        
        // বাটন ১: ৩০% প্রস্থ (weight = 0.3)
        LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT
        );
        params1.weight = 0.3f;
        
        Button button1 = new Button(this);
        button1.setText("Button 1 (30%)");
        button1.setLayoutParams(params1);
        linearLayout.addView(button1);
        
        // বাটন ২: ৭০% প্রস্থ (weight = 0.7)
        LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT
        );
        params2.weight = 0.7f;
        
        Button button2 = new Button(this);
        button2.setText("Button 2 (70%)");
        button2.setLayoutParams(params2);
        linearLayout.addView(button2);
    }
}

ধাপ ৪: AndroidManifest.xml

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

LayoutParams ও Weight-এর মূল নীতি

  • orientation="horizontal" হলে weight = প্রস্থ (width) বণ্টন
  • orientation="vertical" হলে weight = উচ্চতা (height) বণ্টন
  • width=0dp (horizontal) বা height=0dp (vertical) সেট করলে weight সঠিক কাজ করে
  • WRAP_CONTENT দিয়ে weight দিলে কন্টেন্ট সাইজ অনুযায়ী আগে জায়গা নেয়, বাকি weight-এ বণ্টে

উন্নত উদাহরণ: 0dp width দিয়ে সঠিক weight বণ্টন

// সঠিক পদ্ধতি: width=0dp, weight দিয়ে পুরো প্রস্থ বণ্টন
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    0, // width = 0dp
    LinearLayout.LayoutParams.WRAP_CONTENT
);
params.weight = 1f; // সমান বণ্টন (1:1:1...)

Button btn = new Button(this);
btn.setText("Equal Width");
btn.setLayoutParams(params);
linearLayout.addView(btn);

Kotlin Extension Function (সুবিধার জন্য)

fun LinearLayout.addWeightedButton(text: String, weight: Float) {
    val params = LayoutParams(0, LayoutParams.WRAP_CONTENT).apply {
        this.weight = weight
    }
    Button(context).apply {
        setText(text)
        layoutParams = params
    }.also { addView(it) }
}

// ব্যবহার
linearLayout.addWeightedButton("Btn 1", 0.3f)
linearLayout.addWeightedButton("Btn 2", 0.7f)

সাধারণ ভুল ও সমাধান

ভুলসমাধান
weight সেট করলেও কাজ না করাwidth/height 0dp সেট করুন
WRAP_CONTENT দিয়ে weightMATCH_PARENT বা 0dp ব্যবহার করুন
parent LinearLayout না হওয়াParent অবশ্যই LinearLayout হতে হবে
orientation মিসম্যাচhorizontal=width weight, vertical=height weight
  1. Android EditText-এ প্রোগ্রাম্যাটিকভাবে Input Type সেট করা

  2. Android-এ AsyncTask-এর জন্য টাইমআউট সেট করার পদ্ধতি

  3. জাভাতে JButton-এ মার্জিন সেট করা

  4. Android-এ Outlook ইমেল সেটআপ করুন — দ্রুত ও সহজ গাইড