Java/Kotlin कोड के माध्यम से RelativeLayout में डायनामिक व्यूज़ जोड़ना
कई बार XML के बजाय रनटाइम पर व्यूज़ बनाना और उन्हें RelativeLayout में नियमों के साथ पोजिशन करना आवश्यक होता है। यह उदाहरण दर्शाता है कि RelativeLayout.LayoutParams और addRule() का उपयोग करके व्यूज़ को प्रोग्रामेटिकली कैसे लेआउट किया जाए।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में प्रोजेक्ट बनाएं।
चरण 2: XML लेआउट में RelativeLayout कंटेनर
res/layout/activity_main.xml - खाली RelativeLayout कंटेनर:
<?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:id="@+id/relativeLayoutContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="नीचे डायनामिक बटन जुड़ेगा"
android:textSize="16sp" />
</RelativeLayout>
चरण 3: MainActivity में डायनामिक व्यू जोड़ें
package com.app.sample;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private RelativeLayout relativeLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
relativeLayout = findViewById(R.id.relativeLayoutContainer);
// डायनामिक बटन बनाएं
Button dynamicButton = new Button(this);
dynamicButton.setText("डायनामिक बटन");
dynamicButton.setTextColor(0xFFFFFFFF);
dynamicButton.setBackgroundColor(0xFF6200EE);
// LayoutParams बनाएं और नियम सेट करें
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
// पैरेंट के केंद्र में रखें
params.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
// या अन्य नियमों के उदाहरण:
// params.addRule(RelativeLayout.BELOW, R.id.someViewId); // किसी व्यू के नीचे
// params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); // दाएं अलाइन
// params.addRule(RelativeLayout.LEFT_OF, R.id.otherViewId); // किसी व्यू के बाएं
dynamicButton.setLayoutParams(params);
// क्लिक लिस्टनर
dynamicButton.setOnClickListener(v ->
Toast.makeText(MainActivity.this, "डायनामिक बटन पर क्लिक किया गया!", Toast.LENGTH_SHORT).show()
);
// RelativeLayout में जोड़ें
relativeLayout.addView(dynamicButton);
}
}
मुख्य RelativeLayout नियम (addRule के लिए)
| नियम | विवरण |
|---|---|
CENTER_IN_PARENT | पैरेंट में क्षैतिज और लंबवत केंद्र |
CENTER_HORIZONTAL | क्षैतिज केंद्र |
CENTER_VERTICAL | लंबवत केंद्र |
ALIGN_PARENT_TOP/BOTTOM/LEFT/RIGHT | पैरेंट के किनारे से अलाइन |
ABOVE/BELOW/LEFT_OF/RIGHT_OF | दूसरे व्यू (ID द्वारा) के सापेक्ष पोजिशन |
ALIGN_TOP/BOTTOM/LEFT/RIGHT | दूसरे व्यू के किनारे के साथ अलाइन |
Kotlin में समान कोड
val dynamicButton = Button(this).apply {
text = "डायनामिक बटन"
setTextColor(Color.WHITE)
setBackgroundColor(Color.parseColor("#6200EE"))
}
val params = RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
).apply {
addRule(RelativeLayout.CENTER_IN_PARENT)
}
dynamicButton.layoutParams = params
dynamicButton.setOnClickListener {
Toast.makeText(this@MainActivity, "क्लिक किया गया!", Toast.LENGTH_SHORT).show()
}
relativeLayout.addView(dynamicButton)
चरण 4: 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:theme="@style/Theme.AppCompat.Light">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
बेस्ट प्रैक्टिसेज
- ID असाइन करें: डायनामिक व्यूज़ को
setId(View.generateViewId())दें ताकि अन्य व्यूज़ उनके सापेक्ष पोजिशन हो सकें। removeRule()का उपयोग करके नियम हटाएं।- मार्जिन के लिए
params.setMargins(left, top, right, bottom)उपयोग करें। - जटिल लेआउट्स के लिए
ConstraintLayout+ConstraintSetअधिक शक्तिशाली है।
चेतावनी: RelativeLayout में बहुत अधिक नेस्टेड व्यूज़ या जटिल नियम परफॉरमेंस प्रभावित कर सकते हैं। आधुनिक ऐप्स के लिए ConstraintLayout या Jetpack Compose प्राथमिकता दें।