LinearLayout में प्रोग्रामेटिकली बटन बनाकर layout_weight असाइन करने का तरीका।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में नया प्रोजेक्ट बनाएं।
चरण 2: लेआउट (केवल कंटेनर)
res/layout/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">
</LinearLayout>
चरण 3: डायनामिक बटन निर्माण
src/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);
// बटन 1 - 30% वजन
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);
// बटन 2 - 70% वजन
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);
}
}
मुख्य बिंदु
LinearLayout.LayoutParamsका उपयोग करें (ViewGroup.LayoutParams नहीं)weightफ्लोट मान स्वीकार करता है (सापेक्ष अनुपात)width=0dpऔरweightसाथ में उपयोग करने पर स्पेस सटीक विभाजित होता हैWRAP_CONTENTके साथ वजन काम करता है लेकिन0dpबेहतर है
बेहतर दृष्टिकोण: 0dp चौड़ाई
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
0, // चौड़ाई 0
LinearLayout.LayoutParams.WRAP_CONTENT
);
params.weight = 1f; // समान वितरण
Kotlin एक्सटेंशन फंक्शन
fun LinearLayout.addWeightedButton(text: String, weight: Float) {
val btn = Button(context).apply { text = text }
val params = LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT).apply {
this.weight = weight
}
addView(btn, params)
}
// उपयोग
linearLayout.addWeightedButton("Btn 1", 0.3f)
linearLayout.addWeightedButton("Btn 2", 0.7f)
चरण 4: मैनिफेस्ट
मानक मैनिफेस्ट।