একটি দর্শনের মার্জিন পান


95

কোনও ক্রিয়াকলাপ থেকে আমি কীভাবে একটি দর্শনের মার্জিন মান পেতে পারি? ভিউ যে কোনও ধরণের হতে পারে।

কিছুক্ষণ অনুসন্ধানের পরে আমি একটি ভিউয়ের প্যাডিং পাওয়ার উপায়গুলি খুঁজে বের করেছিলাম, তবে মার্জিনে কিছুই পাইনি। কেউ সাহায্য করতে পারেন?

আমি এরকম কিছু চেষ্টা করেছিলাম,

ViewGroup.LayoutParams vlp = view.getLayoutParams();
int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin;

এটি কাজ করে, তবে উপরের কোডটিতে আমি ভিউটিকে একটি বলে ধরে নিয়েছি LinearLayout। তবে marginভিউয়ের ধরণটি আমি না জানলেও আমার এট্রিবিউটটি পাওয়া দরকার ।

উত্তর:


180

এটা চেষ্টা কর:

View view = findViewById(...) //or however you need it
LayoutParams lp = (LayoutParams) view.getLayoutParams();

মার্জিনের মাধ্যমে অ্যাক্সেসযোগ্য

lp.leftMargin;
lp.rightMargin;
lp.topMargin;
lp.bottomMargin;

সম্পাদনা: সম্ভবত ViewGroup.MarginLayoutParamsআপনার জন্য কাজ করবে। এটি অন্যদের জন্য একটি বেস ক্লাস LayoutParams

ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();

http://developer.android.com/references/android/view/ViewGroup.MarginLayoutParams.html


7
আসলে আমি এই জাতীয় কিছু আশা করছিলাম, তবে আমি মনে করি না যে কোনও প্রত্যক্ষ শ্রেণি বলা হয় LayoutParams। মত ক্লাস আছে FrameLayout.LayoutParams, RelativeLayout.LayoutParamsকিন্তু মত কিছুই LayoutParamsনিজেই। এবং যেহেতু আমি দেখার ধরণটি জানি না, তাই আমি পূর্বের কোনও শ্রেণি ব্যবহার করতে পারি না।
অর্ণব চক্রবর্তী

4
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();তাহলে কি হবে ?
ভ্লাদিমির

ভিউগ্রুপটি হওয়া উচিত M
রকহামার


4

এখন এই সম্পাদিত কোডটি ব্যবহার করুন। এটি আপনাকে সাহায্য করবে

FrameLayout.LayoutParams lp=(FrameLayout.LayoutParams)mainLayout.getLayoutParams();

lp.leftMargin  // for left margin
lp.rightMargin   // for right margin

আপনি যে পদ্ধতিগুলি উল্লেখ করেছেন সেগুলি ভিউয়ের বাম, ডান, উপর এবং নীচে অবস্থানগুলি দেয়, আমার মার্জিন দরকার।
অর্ণব চক্রবর্তী

অগত্যা। একটি দৃশ্য সম্ভবত একটি ওরিয়েন্টেশন LinearLayoutসহ স্থাপন করা হয়েছে horizontal। লেআউটটিতে এটির দ্বিতীয় দৃষ্টিভঙ্গিটি যদি view.getLeft()পদ্ধতিটি আমাকে তার বাম দিকের সমন্বয় দেয় তবে তার সংলগ্ন ভিউ থেকে দেখার বাম মার্জিনটি দেয়।
অর্ণব চক্রবর্তী

ভিউ যদি হয় তবে LinearLayout?
অর্ণব চক্রবর্তী

3

অন্যরা যেমন পরামর্শ দিয়েছে, লেআউট_মার্গিন # হ'ল পিতামাতার # প্রান্ত এবং আপনার দর্শনর মধ্যে স্থান।

  • # "বাম", "ডান", "শীর্ষ" বা "নীচে" প্রতিস্থাপন করে

মার্জিনগুলি অর্জন / সেট করা আমার সাথে এর সাথে কাজ করেছে:

ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams();
params.topMargin += 20;
mView.requestLayout();

অবশ্যই, আমার ভিউটি সত্যই একটি ভিউগ্রুপ ছিল এবং পিতামাতারও একটি ভিউগ্রুপ ছিল। বেশিরভাগ ক্ষেত্রে, আপনার নিজের বিন্যাসের প্যারামগুলি পিতামাতার ভিউ ক্লাস লেআউটপ্যারামগুলিতে কাস্ট করা উচিত (এই ক্ষেত্রে এটির ভিউগ্রুপ এবং রিলেটিভলআউট)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.