LayoutParams ব্যবহার করে রানটাইমে ImageView মার্জিন সেট করা
অ্যান্ড্রয়েডে ভিউ-এর মার্জিন প্রোগ্রাম্যাটিক্যালি সেট করার জন্য তার প্যারেন্ট লেআউটের `LayoutParams` অবজেক্ট ব্যবহার করতে হয়। `RelativeLayout` এর জন্য `RelativeLayout.LayoutParams` ব্যবহার করা হয়।
ধাপ ১: প্রজেক্ট তৈরি করুন
স্ট্যান্ডার্ড অ্যান্ড্রয়েড প্রজেক্ট।
ধাপ ২: লেআউটে ImageView
res/layout/activity_main.xml - RelativeLayout-এ ImageView:
<?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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/image" />
</RelativeLayout>
ধাপ ৩: ড্রয়েবল ফোল্ডারে ছবি রাখুন
Project view-এ `res/drawable/` ফোল্ডারে আপনার ছবি ফাইল (যেমন `image.png` বা `image.jpg`) কপি করুন।
ধাপ ৪: মার্জিন সেট করার কোড
src/MainActivity.java:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.RelativeLayout;
public class MainActivity extends AppCompatActivity {
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.imageView);
// প্যারেন্টের LayoutParams পাওয়া (RelativeLayout.LayoutParams)
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) imageView.getLayoutParams();
// মার্জিন সেট করা (পিক্সেলে): left, top, right, bottom
layoutParams.setMargins(100, 100, 100, 100);
// আপডেট করা LayoutParams আবার ভিউতে সেট করা
imageView.setLayoutParams(layoutParams);
}
}
গুরুত্বপূর্ণ নোট
- কাস্টিং: প্যারেন্ট লেআউট অনুযায়ী সঠিক LayoutParams কাস্ট করুন (LinearLayout.LayoutParams, FrameLayout.LayoutParams, ConstraintLayout.LayoutParams ইত্যাদি)
- পিক্সেল vs DP: `setMargins()` পিক্সেল নেয়। DP-তে দিতে হলে কনভার্ট করুন:
int marginDp = 16; int marginPx = (int) (marginDp * getResources().getDisplayMetrics().density + 0.5f); layoutParams.setMargins(marginPx, marginPx, marginPx, marginPx);
- মার্জিন আপডেট: `setLayoutParams()` কল না করলে পরিবর্তন রিফ্লেক্ট হবে না
বিভিন্ন লেআউটের জন্য LayoutParams
| প্যারেন্ট লেআউট | LayoutParams ক্লাস |
|---|---|
| LinearLayout | LinearLayout.LayoutParams |
| RelativeLayout | RelativeLayout.LayoutParams |
| FrameLayout | FrameLayout.LayoutParams |
| ConstraintLayout | ConstraintLayout.LayoutParams |
| GridLayout | GridLayout.LayoutParams |
ConstraintLayout-এ মার্জিন (আধুনিক পদ্ধতি)
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) imageView.getLayoutParams(); params.leftMargin = marginPx; params.topMargin = marginPx; params.rightMargin = marginPx; params.bottomMargin = marginPx; imageView.setLayoutParams(params); // অথবা ConstraintSet ব্যবহার করুন (অনিমেশনসহ) ConstraintSet constraintSet = new ConstraintSet(); constraintSet.clone(constraintLayout); constraintSet.setMargin(R.id.imageView, ConstraintSet.START, marginPx); constraintSet.applyTo(constraintLayout);