getMeasuredWidth/Height দিয়ে ডাইনামিক ভিউর সাইজ পাওয়া
XML-এ না থাকা ডাইনামিক্যালি তৈরি ভিউর সাইজ পেতে measure() কল করতে হয়, তারপর getMeasuredWidth() / getMeasuredHeight()।
কোড উদাহরণ
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout root = findViewById(R.id.rootview);
// ডাইনামিক টেক্সটভিউ তৈরি
TextView tv = new TextView(this);
tv.setText("Sample text for checking dimensions");
tv.setPadding(16, 16, 16, 16);
tv.setTextSize(18);
// মেজার স্পেসিফিকেশন (UNSPECIFIED = যত বড় হতে চায়)
tv.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
// লেআউট প্যারাম
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(16, 32, 0, 0);
tv.setLayoutParams(params);
root.addView(tv);
// এখন সাইজ পাওয়া যাবে
int width = tv.getMeasuredWidth();
int height = tv.getMeasuredHeight();
Toast.makeText(this, "Width: " + width + "px, Height: " + height + "px", Toast.LENGTH_LONG).show();
}
}
মূল পয়েন্ট
measure(0,0)বাUNSPECIFIEDদিয়ে মেজার পাস করুন।getWidth()/getHeight()লেআউট কমপ্লিট হওয়ার পরে কাজ করে (onWindowFocusChanged বা ViewTreeObserver-এ)।getMeasuredWidth()/Height()মেজার পাসের ফলাফল দেয়।
XML-এ থাকা ভিউর সাইজ
// onWindowFocusChanged-এ বা View.post(() -> ...) ব্যবহার করুন
view.post(() -> {
int w = view.getWidth();
int h = view.getHeight();
});