কম্পোজে, আপনি একটি কম্পোজেবলের চেহারা এবং অনুভূতি পরিবর্তন করতে একাধিক মডিফায়ারকে একসাথে চেইন করতে পারেন। এই সংশোধক চেইনগুলি কম্পোজেবলগুলিতে পাস করা সীমাবদ্ধতাগুলিকে প্রভাবিত করতে পারে, যা প্রস্থ এবং উচ্চতার সীমা নির্ধারণ করে।
এই পৃষ্ঠাটি বর্ণনা করে কিভাবে শৃঙ্খলিত সংশোধক সীমাবদ্ধতাগুলিকে প্রভাবিত করে এবং ফলস্বরূপ, কম্পোজেবলের পরিমাপ এবং বসানো।
UI ট্রিতে সংশোধক
সংশোধকগুলি কীভাবে একে অপরকে প্রভাবিত করে তা বোঝার জন্য, UI ট্রিতে তারা কীভাবে উপস্থিত হয় তা কল্পনা করা সহায়ক, যা রচনা পর্যায়ে উত্পন্ন হয়। আরও তথ্যের জন্য, রচনা বিভাগটি দেখুন।
UI ট্রিতে, আপনি লেআউট নোডগুলির জন্য মোড়ক নোড হিসাবে পরিবর্তনকারীদের কল্পনা করতে পারেন:

একটি কম্পোজেবলে একাধিক মডিফায়ার যোগ করলে মডিফায়ারের একটি চেইন তৈরি হয়। আপনি যখন একাধিক মডিফায়ারকে চেইন করেন, তখন প্রতিটি মডিফায়ার নোড বাকি চেইন এবং লেআউট নোডকে এর মধ্যে মুড়ে দেয় । উদাহরণস্বরূপ, আপনি যখন একটি clip
এবং একটি size
পরিবর্তনকারীকে চেইন করেন, তখন clip
সংশোধক নোডটি size
পরিবর্তনকারী নোডকে মোড়ানো হয়, যা তারপরে Image
লেআউট নোডটিকে মোড়ানো হয়।
লেআউট পর্বে, গাছের সাথে চলার অ্যালগরিদম একই থাকে, তবে প্রতিটি মডিফায়ার নোডও পরিদর্শন করা হয়। এইভাবে, একটি সংশোধক সংশোধক বা লেআউট নোডের আকারের প্রয়োজনীয়তা এবং স্থান নির্ধারণ করতে পারে যা এটি মোড়ানো হয়।
চিত্র 2-এ যেমন দেখানো হয়েছে, Image
এবং Text
কম্পোজেবলের বাস্তবায়নে একটি একক লেআউট নোড মোড়ানো মডিফায়ারের একটি চেইন থাকে। Row
এবং Column
প্রয়োগগুলি কেবলমাত্র লেআউট নোড যা বর্ণনা করে যে কীভাবে তাদের বাচ্চাদের লেআউট করতে হয়।

সংক্ষিপ্ত করতে:
- সংশোধক একটি একক সংশোধক বা লেআউট নোড মোড়ানো।
- লেআউট নোড একাধিক চাইল্ড নোড লেআউট করতে পারে।
নিম্নোক্ত বিভাগগুলি বর্ণনা করে যে কীভাবে এই মানসিক মডেলটি মডিফায়ার চেইনিং সম্পর্কে যুক্তির জন্য ব্যবহার করতে হয় এবং কীভাবে এটি কম্পোজেবলের আকারকে প্রভাবিত করে।
লেআউট পর্বে সীমাবদ্ধতা
লেআউট ফেজ প্রতিটি লেআউট নোডের প্রস্থ, উচ্চতা এবং x, y স্থানাঙ্ক খুঁজে পেতে একটি তিন-পদক্ষেপ অ্যালগরিদম অনুসরণ করে:
- শিশুদের পরিমাপ করুন : একটি নোড তার শিশুদের পরিমাপ করে, যদি থাকে।
- নিজের আকার নির্ধারণ করুন : এই পরিমাপের উপর ভিত্তি করে, একটি নোড তার নিজের আকারের উপর সিদ্ধান্ত নেয়।
- শিশুদের রাখুন : প্রতিটি চাইল্ড নোড একটি নোডের নিজস্ব অবস্থানের সাপেক্ষে স্থাপন করা হয়।
Constraints
অ্যালগরিদমের প্রথম দুটি ধাপে নোডের জন্য সঠিক মাপ খুঁজে পেতে সাহায্য করে। সীমাবদ্ধতা একটি নোডের প্রস্থ এবং উচ্চতার জন্য সর্বনিম্ন এবং সর্বোচ্চ সীমা নির্ধারণ করে। যখন নোড তার আকারের উপর সিদ্ধান্ত নেয়, তখন তার পরিমাপ করা আকার এই আকারের সীমার মধ্যে হওয়া উচিত।
সীমাবদ্ধতার প্রকার
একটি সীমাবদ্ধতা নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
- আবদ্ধ : নোডের সর্বোচ্চ এবং সর্বনিম্ন প্রস্থ এবং উচ্চতা রয়েছে।

- সীমাহীন : নোড কোন আকারে সীমাবদ্ধ নয়। সর্বাধিক প্রস্থ এবং উচ্চতা সীমা অসীম সেট করা হয়.

- সঠিক : নোডটিকে একটি সঠিক আকারের প্রয়োজনীয়তা অনুসরণ করতে বলা হয়। সর্বনিম্ন এবং সর্বোচ্চ সীমা একই মান সেট করা হয়.

- সংমিশ্রণ : নোডটি উপরের সীমাবদ্ধতার প্রকারের সংমিশ্রণ অনুসরণ করে। উদাহরণস্বরূপ, একটি সীমাবদ্ধতা একটি সীমাহীন সর্বাধিক উচ্চতার অনুমতি দেওয়ার সময় প্রস্থকে আবদ্ধ করতে পারে, বা একটি সঠিক প্রস্থ সেট করে তবে একটি আবদ্ধ উচ্চতা প্রদান করতে পারে।

পরবর্তী বিভাগে বর্ণনা করা হয়েছে কিভাবে এই সীমাবদ্ধতাগুলি একজন পিতামাতা থেকে একটি সন্তানের কাছে চলে যায়।
পিতামাতা থেকে সন্তানের কাছে কীভাবে সীমাবদ্ধতাগুলি প্রেরণ করা হয়
লেআউট পর্বে সীমাবদ্ধতায় বর্ণিত অ্যালগরিদমের প্রথম ধাপের সময়, UI ট্রিতে সীমাবদ্ধতাগুলি পিতামাতা থেকে সন্তানের কাছে পাঠানো হয়।
যখন একটি অভিভাবক নোড তার সন্তানদের পরিমাপ করে, তখন এটি প্রতিটি শিশুকে এই সীমাবদ্ধতাগুলি প্রদান করে যাতে তারা জানতে পারে যে তারা কত বড় বা ছোট হতে পারে। তারপর, যখন এটি নিজের আকার নির্ধারণ করে, তখন এটি তার নিজের পিতামাতার দ্বারা পাস করা সীমাবদ্ধতাগুলিও মেনে চলে।
একটি উচ্চ স্তরে, অ্যালগরিদম নিম্নলিখিত উপায়ে কাজ করে:
- এটি আসলে যে আকারটি দখল করতে চায় তা নির্ধারণ করতে, UI গাছের রুট নোড তার বাচ্চাদের পরিমাপ করে এবং একই সীমাবদ্ধতাগুলি তার প্রথম সন্তানের কাছে ফরোয়ার্ড করে।
- যদি শিশুটি এমন একটি সংশোধক হয় যা পরিমাপকে প্রভাবিত করে না, তবে এটি সীমাবদ্ধতাগুলিকে পরবর্তী সংশোধকের কাছে প্রেরণ করে। পরিমাপকে প্রভাবিত করে এমন একটি সংশোধক না পৌঁছালে সীমাবদ্ধতাগুলি সংশোধক শৃঙ্খলে যেমন-ই চলে যায়। সীমাবদ্ধতাগুলি তারপর সেই অনুযায়ী পুনরায় আকার দেওয়া হয়।
- একবার একটি নোড পৌঁছে গেলে যেখানে কোনও সন্তান নেই (একটি "লিফ নোড" হিসাবে উল্লেখ করা হয়), এটি পাস করা সীমাবদ্ধতার উপর ভিত্তি করে এর আকার নির্ধারণ করে এবং এই সমাধান করা আকারটি তার পিতামাতার কাছে ফেরত দেয়।
- পিতামাতা এই সন্তানের পরিমাপের উপর ভিত্তি করে তার সীমাবদ্ধতাগুলিকে মানিয়ে নেয় এবং এই সামঞ্জস্যপূর্ণ সীমাবদ্ধতার সাথে তার পরবর্তী সন্তানকে ডাকে।
- একবার অভিভাবকের সমস্ত সন্তান পরিমাপ করা হলে, অভিভাবক নোড তার নিজের আকারের উপর সিদ্ধান্ত নেয় এবং তার নিজের পিতামাতার সাথে যোগাযোগ করে।
- এইভাবে, পুরো গাছটি প্রথমে গভীরতা অতিক্রম করা হয়। অবশেষে, সমস্ত নোড তাদের আকারের উপর সিদ্ধান্ত নিয়েছে, এবং পরিমাপ পদক্ষেপ সম্পন্ন হয়েছে।
একটি গভীর উদাহরণের জন্য, সীমাবদ্ধতা এবং সংশোধনকারী অর্ডার ভিডিও দেখুন।
সংশোধক যা সীমাবদ্ধতাকে প্রভাবিত করে
আপনি পূর্ববর্তী বিভাগে শিখেছেন যে কিছু সংশোধক সীমাবদ্ধতার আকারকে প্রভাবিত করতে পারে। নিম্নলিখিত বিভাগগুলি নির্দিষ্ট সংশোধকদের বর্ণনা করে যা সীমাবদ্ধতাকে প্রভাবিত করে।
size
পরিবর্তনকারী
size
পরিবর্তনকারী সামগ্রীর পছন্দসই আকার ঘোষণা করে।
উদাহরণস্বরূপ, নিম্নলিখিত UI ট্রিটি 200dp
দ্বারা 300dp
এর একটি পাত্রে রেন্ডার করা উচিত। সীমাবদ্ধতাগুলি আবদ্ধ, 100dp
এবং 300dp
এর মধ্যে প্রস্থ এবং 100dp
এবং 200dp
মধ্যে উচ্চতাকে অনুমতি দেয়:

size
সংশোধক আগত সীমাবদ্ধতাকে মানিয়ে নেয় যাতে এটিতে পাস করা মানটি মেলে। এই উদাহরণে, মান হল 150dp
:

size
সংশোধক 150dp
এ সীমাবদ্ধতা সামঞ্জস্য করে।যদি প্রস্থ এবং উচ্চতা ক্ষুদ্রতম সীমাবদ্ধতার চেয়ে ছোট হয়, বা সবচেয়ে বড় সীমাবদ্ধতার চেয়ে বড় হয়, তাহলে সংশোধকটি পাস করা সীমাবদ্ধতাগুলির সাথে যতটা ঘনিষ্ঠভাবে মেলে এবং এখনও পাস করা সীমাবদ্ধতাগুলি মেনে চলে:

size
সংশোধক যতটা সম্ভব ঘনিষ্ঠভাবে পাস করা সীমাবদ্ধতা মেনে চলে। মনে রাখবেন যে একাধিক size
পরিবর্তনকারীকে চেইন করা কাজ করে না। প্রথম size
সংশোধক একটি নির্দিষ্ট মানের সর্বনিম্ন এবং সর্বোচ্চ উভয় সীমাবদ্ধতা সেট করে। এমনকি যদি দ্বিতীয় আকারের সংশোধক একটি ছোট বা বড় আকারের অনুরোধ করে, তবুও এটিকে পাস করা সঠিক সীমাগুলি মেনে চলতে হবে, তাই এটি সেই মানগুলিকে ওভাররাইড করবে না:

size
সংশোধকগুলির একটি চেইন, যেখানে দ্বিতীয় মানটি ( 50dp
) এ পাস করেছে প্রথম মান ( 100dp
)টিকে ওভাররাইড করে না। requiredSize
পরিবর্তনকারী
ইনকামিং সীমাবদ্ধতাগুলি ওভাররাইড করার জন্য আপনার নোডের প্রয়োজন হলে size
পরিবর্তে requiredSize
মডিফায়ার ব্যবহার করুন। requiredSize
সাইজ সংশোধক ইনকামিং সীমাবদ্ধতাগুলি প্রতিস্থাপন করে এবং সঠিক সীমা হিসাবে আপনার নির্দিষ্ট করা আকারটি পাস করে।
যখন আকারটি গাছের ব্যাক আপ করা হয়, তখন চাইল্ড নোডটি উপলব্ধ স্থানে কেন্দ্রীভূত হবে:

requiredSize
মডিফায়ার size
মডিফায়ার থেকে ইনকামিং সীমাবদ্ধতা ওভাররাইড করে। width
এবং height
সংশোধক
size
সংশোধক সীমাবদ্ধতার প্রস্থ এবং উচ্চতা উভয়কেই মানিয়ে নেয়। width
সংশোধনকারীর সাহায্যে, আপনি একটি নির্দিষ্ট প্রস্থ সেট করতে পারেন তবে উচ্চতাটি অনিশ্চিত রেখে যান। একইভাবে, height
পরিবর্তনকারীর সাথে, আপনি একটি নির্দিষ্ট উচ্চতা সেট করতে পারেন, তবে প্রস্থটি অনিশ্চিত রেখে দিন:

width
সংশোধক এবং height
সংশোধক যথাক্রমে একটি নির্দিষ্ট প্রস্থ এবং উচ্চতা নির্ধারণ করে। sizeIn
মডিফায়ার
sizeIn
মডিফায়ার আপনাকে প্রস্থ এবং উচ্চতার জন্য সঠিক ন্যূনতম এবং সর্বোচ্চ সীমাবদ্ধতা সেট করতে দেয়। sizeIn
মডিফায়ার ব্যবহার করুন যদি আপনার সীমাবদ্ধতার উপর সূক্ষ্ম নিয়ন্ত্রণের প্রয়োজন হয়।

minWidth
, maxWidth
, minHeight
, এবং maxHeight
সেট সহ sizeIn
মডিফায়ার।উদাহরণ
এই বিভাগটি চেইনড মডিফায়ার সহ বেশ কয়েকটি কোড স্নিপেট থেকে আউটপুট দেখায় এবং ব্যাখ্যা করে।
Image( painterResource(R.drawable.hero), contentDescription = null, Modifier .fillMaxSize() .size(50.dp) )
এই স্নিপেট নিম্নলিখিত আউটপুট উত্পাদন করে:
-
fillMaxSize
সংশোধক সীমাবদ্ধতা পরিবর্তন করে সর্বনিম্ন প্রস্থ এবং উচ্চতা উভয়কেই সর্বোচ্চ মান নির্ধারণ করে — প্রস্থে300dp
এবং উচ্চতায়200dp
। - যদিও
size
সংশোধক50dp
এর আকার ব্যবহার করতে চায়, তবুও এটিকে আগত ন্যূনতম সীমাবদ্ধতাগুলি মেনে চলতে হবে। তাইsize
সংশোধকটি300
দ্বারা200
এর সঠিক সীমাবদ্ধতাও আউটপুট করবে, কার্যকরভাবেsize
সংশোধকটিতে প্রদত্ত মানটিকে উপেক্ষা করে। -
Image
এই সীমাগুলি অনুসরণ করে এবং300
বাই200
এর আকারের রিপোর্ট করে, যা গাছের উপরে চলে যায়।
Image( painterResource(R.drawable.hero), contentDescription = null, Modifier .fillMaxSize() .wrapContentSize() .size(50.dp) )
এই স্নিপেট নিম্নলিখিত আউটপুট উত্পাদন করে:
-
fillMaxSize
মডিফায়ার ন্যূনতম প্রস্থ এবং উচ্চতা উভয়কেই সর্বাধিক মান - প্রস্থে300dp
এবং উচ্চতায়200dp
সেট করতে সীমাবদ্ধতাগুলিকে খাপ খায়। -
wrapContentSize
সংশোধক সর্বনিম্ন সীমাবদ্ধতা পুনরায় সেট করে। সুতরাং,fillMaxSize
ফলে নির্দিষ্ট সীমাবদ্ধতা দেখা দিলে,wrapContentSize
এটিকে আবার সীমাবদ্ধ সীমাবদ্ধতায় পুনরায় সেট করে । নিম্নলিখিত নোডটি এখন আবার পুরো স্থান নিতে পারে, বা পুরো স্থানের চেয়ে ছোট হতে পারে। -
size
সংশোধক সীমাবদ্ধতাগুলিকে সর্বনিম্ন এবং সর্বাধিক50
সীমাতে সেট করে। -
Image
50
বাই50
আকারে সমাধান করে এবংsize
পরিবর্তনকারী সেটিকে এগিয়ে দেয়। -
wrapContentSize
সংশোধকের একটি বিশেষ সম্পত্তি আছে। এটি তার সন্তানকে নিয়ে যায় এবং এটিকে পাস করা উপলব্ধ সর্বনিম্ন সীমার কেন্দ্রে রাখে । এটি তার পিতামাতার সাথে যে আকারে যোগাযোগ করে তা এইভাবে এটিতে প্রবেশ করা ন্যূনতম সীমার সমান।
মাত্র তিনটি সংশোধক একত্রিত করে, আপনি কম্পোজেবলের জন্য একটি আকার সংজ্ঞায়িত করতে পারেন এবং এটিকে এর প্যারেন্টে কেন্দ্র করতে পারেন।
Image( painterResource(R.drawable.hero), contentDescription = null, Modifier .clip(CircleShape) .padding(10.dp) .size(100.dp) )
এই স্নিপেট নিম্নলিখিত আউটপুট উত্পাদন করে:
-
clip
মডিফায়ার সীমাবদ্ধতা পরিবর্তন করে না।-
padding
মডিফায়ার সর্বোচ্চ সীমাবদ্ধতা কমিয়ে দেয়। -
size
সংশোধক100dp
তে সমস্ত সীমাবদ্ধতা সেট করে। -
Image
সেই সীমাবদ্ধতাগুলি মেনে চলে এবং100
বাই100dp
আকারের রিপোর্ট করে৷ -
padding
সংশোধক সমস্ত আকারে10dp
যোগ করে, তাই এটি রিপোর্ট করা প্রস্থ এবং উচ্চতা20dp
দ্বারা বৃদ্ধি করে। - এখন অঙ্কন পর্যায়ে,
clip
মডিফায়ার120
বাই120dp
এর ক্যানভাসে কাজ করে। সুতরাং, এটি সেই আকারের একটি বৃত্তের মুখোশ তৈরি করে । -
padding
মডিফায়ার তার বিষয়বস্তুকে সব আকারে10dp
দ্বারা ইনসেট করে, তাই এটি ক্যানভাসের আকার100
বাই100dp
এ কমিয়ে দেয়। - সেই ক্যানভাসে
Image
আঁকা হয়েছে। ছবিটি120dp
এর মূল বৃত্তের উপর ভিত্তি করে ক্লিপ করা হয়েছে, তাই আউটপুটটি একটি অ-গোলাকার ফলাফল।
-
কম্পোজে, আপনি একটি কম্পোজেবলের চেহারা এবং অনুভূতি পরিবর্তন করতে একাধিক মডিফায়ারকে একসাথে চেইন করতে পারেন। এই সংশোধক চেইনগুলি কম্পোজেবলগুলিতে পাস করা সীমাবদ্ধতাগুলিকে প্রভাবিত করতে পারে, যা প্রস্থ এবং উচ্চতার সীমা নির্ধারণ করে।
এই পৃষ্ঠাটি বর্ণনা করে যে কীভাবে চেইনড মডিফায়ার সীমাবদ্ধতাগুলিকে প্রভাবিত করে এবং ফলস্বরূপ, কম্পোজেবলের পরিমাপ এবং স্থাপন করা হয়।
UI ট্রিতে সংশোধক
সংশোধকগুলি কীভাবে একে অপরকে প্রভাবিত করে তা বোঝার জন্য, UI ট্রিতে তারা কীভাবে উপস্থিত হয় তা কল্পনা করা সহায়ক, যা রচনা পর্যায়ে উত্পন্ন হয়। আরও তথ্যের জন্য, রচনা বিভাগটি দেখুন।
UI ট্রিতে, আপনি লেআউট নোডগুলির জন্য মোড়ক নোড হিসাবে পরিবর্তনকারীদের কল্পনা করতে পারেন:

একটি কম্পোজেবলে একাধিক মডিফায়ার যোগ করলে মডিফায়ারের একটি চেইন তৈরি হয়। আপনি যখন একাধিক মডিফায়ারকে চেইন করেন, তখন প্রতিটি মডিফায়ার নোড বাকি চেইন এবং লেআউট নোডকে এর মধ্যে মুড়ে দেয় । উদাহরণস্বরূপ, আপনি যখন একটি clip
এবং একটি size
পরিবর্তনকারীকে চেইন করেন, তখন clip
সংশোধক নোডটি size
পরিবর্তনকারী নোডকে মোড়ানো হয়, যা তারপরে Image
লেআউট নোডটিকে মোড়ানো হয়।
লেআউট পর্বে, গাছের সাথে চলার অ্যালগরিদম একই থাকে, তবে প্রতিটি মডিফায়ার নোডও পরিদর্শন করা হয়। এইভাবে, একটি সংশোধক সংশোধক বা লেআউট নোডের আকারের প্রয়োজনীয়তা এবং স্থান নির্ধারণ করতে পারে যা এটি মোড়ানো হয়।
চিত্র 2-এ যেমন দেখানো হয়েছে, Image
এবং Text
কম্পোজেবলের বাস্তবায়নে একটি একক লেআউট নোড মোড়ানো মডিফায়ারের একটি চেইন থাকে। Row
এবং Column
প্রয়োগগুলি কেবলমাত্র লেআউট নোড যা বর্ণনা করে যে কীভাবে তাদের বাচ্চাদের লেআউট করতে হয়।

সংক্ষিপ্ত করতে:
- সংশোধক একটি একক সংশোধক বা লেআউট নোড মোড়ানো।
- লেআউট নোড একাধিক চাইল্ড নোড লেআউট করতে পারে।
নিম্নোক্ত বিভাগগুলি বর্ণনা করে যে কীভাবে এই মানসিক মডেলটি মডিফায়ার চেইনিং সম্পর্কে যুক্তির জন্য ব্যবহার করতে হয় এবং কীভাবে এটি কম্পোজেবলের আকারকে প্রভাবিত করে।
লেআউট পর্বে সীমাবদ্ধতা
লেআউট ফেজ প্রতিটি লেআউট নোডের প্রস্থ, উচ্চতা এবং x, y স্থানাঙ্ক খুঁজে পেতে একটি তিন-পদক্ষেপ অ্যালগরিদম অনুসরণ করে:
- শিশুদের পরিমাপ করুন : একটি নোড তার শিশুদের পরিমাপ করে, যদি থাকে।
- নিজের আকার নির্ধারণ করুন : এই পরিমাপের উপর ভিত্তি করে, একটি নোড তার নিজের আকারের উপর সিদ্ধান্ত নেয়।
- শিশুদের রাখুন : প্রতিটি চাইল্ড নোড একটি নোডের নিজস্ব অবস্থানের সাপেক্ষে স্থাপন করা হয়।
Constraints
অ্যালগরিদমের প্রথম দুটি ধাপে নোডের জন্য সঠিক মাপ খুঁজে পেতে সাহায্য করে। সীমাবদ্ধতা একটি নোডের প্রস্থ এবং উচ্চতার জন্য সর্বনিম্ন এবং সর্বোচ্চ সীমা নির্ধারণ করে। যখন নোড তার আকারের উপর সিদ্ধান্ত নেয়, তখন তার পরিমাপ করা আকার এই আকারের সীমার মধ্যে হওয়া উচিত।
সীমাবদ্ধতার প্রকার
একটি সীমাবদ্ধতা নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
- আবদ্ধ : নোডের সর্বোচ্চ এবং সর্বনিম্ন প্রস্থ এবং উচ্চতা রয়েছে।

- সীমাহীন : নোড কোন আকারে সীমাবদ্ধ নয়। সর্বাধিক প্রস্থ এবং উচ্চতা সীমা অসীম সেট করা হয়.

- সঠিক : নোডটিকে একটি সঠিক আকারের প্রয়োজনীয়তা অনুসরণ করতে বলা হয়। সর্বনিম্ন এবং সর্বোচ্চ সীমা একই মান সেট করা হয়.

- সংমিশ্রণ : নোডটি উপরের সীমাবদ্ধতার প্রকারের সংমিশ্রণ অনুসরণ করে। উদাহরণস্বরূপ, একটি সীমাবদ্ধতা একটি সীমাহীন সর্বাধিক উচ্চতার অনুমতি দেওয়ার সময় প্রস্থকে আবদ্ধ করতে পারে, বা একটি সঠিক প্রস্থ সেট করে তবে একটি আবদ্ধ উচ্চতা প্রদান করতে পারে।

পরবর্তী বিভাগে বর্ণনা করা হয়েছে কিভাবে এই সীমাবদ্ধতাগুলি একজন পিতামাতা থেকে একটি সন্তানের কাছে চলে যায়।
পিতামাতা থেকে সন্তানের কাছে কীভাবে সীমাবদ্ধতাগুলি প্রেরণ করা হয়
লেআউট পর্বে সীমাবদ্ধতায় বর্ণিত অ্যালগরিদমের প্রথম ধাপের সময়, UI ট্রিতে সীমাবদ্ধতাগুলি পিতামাতা থেকে সন্তানের কাছে পাঠানো হয়।
যখন একটি অভিভাবক নোড তার সন্তানদের পরিমাপ করে, তখন এটি প্রতিটি শিশুকে এই সীমাবদ্ধতাগুলি প্রদান করে যাতে তারা জানতে পারে যে তারা কত বড় বা ছোট হতে পারে। তারপর, যখন এটি নিজের আকার নির্ধারণ করে, তখন এটি তার নিজের পিতামাতার দ্বারা পাস করা সীমাবদ্ধতাগুলিও মেনে চলে।
একটি উচ্চ স্তরে, অ্যালগরিদম নিম্নলিখিত উপায়ে কাজ করে:
- এটি আসলে যে আকারটি দখল করতে চায় তা নির্ধারণ করতে, UI গাছের রুট নোড তার বাচ্চাদের পরিমাপ করে এবং একই সীমাবদ্ধতাগুলি তার প্রথম সন্তানের কাছে ফরোয়ার্ড করে।
- যদি শিশুটি এমন একটি সংশোধক হয় যা পরিমাপকে প্রভাবিত করে না, তবে এটি সীমাবদ্ধতাগুলিকে পরবর্তী সংশোধকের কাছে প্রেরণ করে। পরিমাপকে প্রভাবিত করে এমন একটি সংশোধক না পৌঁছালে সীমাবদ্ধতাগুলি সংশোধক শৃঙ্খলে যেমন-ই চলে যায়। সীমাবদ্ধতাগুলি তারপর সেই অনুযায়ী পুনরায় আকার দেওয়া হয়।
- একবার একটি নোড পৌঁছে গেলে যেখানে কোনও সন্তান নেই (একটি "লিফ নোড" হিসাবে উল্লেখ করা হয়), এটি পাস করা সীমাবদ্ধতার উপর ভিত্তি করে এর আকার নির্ধারণ করে এবং এই সমাধান করা আকারটি তার পিতামাতার কাছে ফেরত দেয়।
- পিতামাতা এই সন্তানের পরিমাপের উপর ভিত্তি করে তার সীমাবদ্ধতাগুলিকে মানিয়ে নেয় এবং এই সামঞ্জস্যপূর্ণ সীমাবদ্ধতার সাথে তার পরবর্তী সন্তানকে ডাকে।
- একবার অভিভাবকের সমস্ত সন্তান পরিমাপ করা হলে, অভিভাবক নোড তার নিজের আকারের উপর সিদ্ধান্ত নেয় এবং তার নিজের পিতামাতার সাথে যোগাযোগ করে।
- এইভাবে, পুরো গাছটি প্রথমে গভীরতা অতিক্রম করা হয়। অবশেষে, সমস্ত নোড তাদের আকারের উপর সিদ্ধান্ত নিয়েছে, এবং পরিমাপ পদক্ষেপ সম্পন্ন হয়েছে।
একটি গভীর উদাহরণের জন্য, সীমাবদ্ধতা এবং সংশোধনকারী অর্ডার ভিডিও দেখুন।
সংশোধক যা সীমাবদ্ধতাকে প্রভাবিত করে
আপনি পূর্ববর্তী বিভাগে শিখেছেন যে কিছু সংশোধক সীমাবদ্ধতার আকারকে প্রভাবিত করতে পারে। নিম্নলিখিত বিভাগগুলি নির্দিষ্ট সংশোধকদের বর্ণনা করে যা সীমাবদ্ধতাকে প্রভাবিত করে।
size
পরিবর্তনকারী
size
পরিবর্তনকারী সামগ্রীর পছন্দসই আকার ঘোষণা করে।
উদাহরণস্বরূপ, নিম্নলিখিত UI ট্রিটি 200dp
দ্বারা 300dp
এর একটি পাত্রে রেন্ডার করা উচিত। সীমাবদ্ধতাগুলি আবদ্ধ, 100dp
এবং 300dp
এর মধ্যে প্রস্থ এবং 100dp
এবং 200dp
মধ্যে উচ্চতাকে অনুমতি দেয়:

size
সংশোধক আগত সীমাবদ্ধতাকে মানিয়ে নেয় যাতে এটিতে পাস করা মানটি মেলে। এই উদাহরণে, মান হল 150dp
:

size
সংশোধক 150dp
এ সীমাবদ্ধতা সামঞ্জস্য করে।যদি প্রস্থ এবং উচ্চতা ক্ষুদ্রতম সীমাবদ্ধতার চেয়ে ছোট হয়, বা সবচেয়ে বড় সীমাবদ্ধতার চেয়ে বড় হয়, তাহলে সংশোধকটি পাস করা সীমাবদ্ধতাগুলির সাথে যতটা ঘনিষ্ঠভাবে মেলে এবং এখনও পাস করা সীমাবদ্ধতাগুলি মেনে চলে:

size
সংশোধক যতটা সম্ভব ঘনিষ্ঠভাবে পাস করা সীমাবদ্ধতা মেনে চলে। মনে রাখবেন যে একাধিক size
পরিবর্তনকারীকে চেইন করা কাজ করে না। প্রথম size
সংশোধক একটি নির্দিষ্ট মানের সর্বনিম্ন এবং সর্বোচ্চ উভয় সীমাবদ্ধতা সেট করে। এমনকি যদি দ্বিতীয় আকারের সংশোধক একটি ছোট বা বড় আকারের অনুরোধ করে, তবুও এটিকে পাস করা সঠিক সীমাগুলি মেনে চলতে হবে, তাই এটি সেই মানগুলিকে ওভাররাইড করবে না:

size
সংশোধকগুলির একটি চেইন, যেখানে দ্বিতীয় মানটি ( 50dp
) এ পাস করেছে প্রথম মান ( 100dp
)টিকে ওভাররাইড করে না। requiredSize
পরিবর্তনকারী
ইনকামিং সীমাবদ্ধতা ওভাররাইড করার জন্য আপনার নোডের প্রয়োজন হলে size
পরিবর্তে requiredSize
মডিফায়ার ব্যবহার করুন। requiredSize
সাইজ সংশোধক ইনকামিং সীমাবদ্ধতাগুলি প্রতিস্থাপন করে এবং সঠিক সীমা হিসাবে আপনার নির্দিষ্ট করা আকারটি পাস করে।
যখন আকারটি গাছের ব্যাক আপ করা হয়, তখন চাইল্ড নোডটি উপলব্ধ স্থানে কেন্দ্রীভূত হবে:

requiredSize
মডিফায়ার size
মডিফায়ার থেকে ইনকামিং সীমাবদ্ধতা ওভাররাইড করে। width
এবং height
সংশোধক
size
সংশোধক সীমাবদ্ধতার প্রস্থ এবং উচ্চতা উভয়কেই মানিয়ে নেয়। width
সংশোধনকারীর সাহায্যে, আপনি একটি নির্দিষ্ট প্রস্থ সেট করতে পারেন তবে উচ্চতাটি অনিশ্চিত রেখে যান। একইভাবে, height
পরিবর্তনকারীর সাথে, আপনি একটি নির্দিষ্ট উচ্চতা সেট করতে পারেন, তবে প্রস্থটি অনিশ্চিত রেখে দিন:

width
সংশোধক এবং height
সংশোধক যথাক্রমে একটি নির্দিষ্ট প্রস্থ এবং উচ্চতা নির্ধারণ করে। sizeIn
মডিফায়ার
sizeIn
সংশোধক আপনাকে প্রস্থ এবং উচ্চতার জন্য সঠিক সর্বনিম্ন এবং সর্বোচ্চ সীমাবদ্ধতা সেট করতে দেয়। sizeIn
মডিফায়ার ব্যবহার করুন যদি আপনার সীমাবদ্ধতার উপর সূক্ষ্ম নিয়ন্ত্রণের প্রয়োজন হয়।

minWidth
, maxWidth
, minHeight
, এবং maxHeight
সেট সহ sizeIn
মডিফায়ার।উদাহরণ
এই বিভাগটি চেইনড মডিফায়ার সহ বেশ কয়েকটি কোড স্নিপেট থেকে আউটপুট দেখায় এবং ব্যাখ্যা করে।
Image( painterResource(R.drawable.hero), contentDescription = null, Modifier .fillMaxSize() .size(50.dp) )
এই স্নিপেট নিম্নলিখিত আউটপুট উত্পাদন করে:
-
fillMaxSize
সংশোধক সীমাবদ্ধতা পরিবর্তন করে সর্বনিম্ন প্রস্থ এবং উচ্চতা উভয়কেই সর্বোচ্চ মান নির্ধারণ করে — প্রস্থে300dp
এবং উচ্চতায়200dp
। - যদিও
size
সংশোধক50dp
এর আকার ব্যবহার করতে চায়, তবুও এটিকে আগত ন্যূনতম সীমাবদ্ধতাগুলি মেনে চলতে হবে। তাইsize
সংশোধকটি300
দ্বারা200
এর সঠিক সীমাবদ্ধতাও আউটপুট করবে, কার্যকরভাবেsize
সংশোধকটিতে প্রদত্ত মানটিকে উপেক্ষা করে। -
Image
এই সীমাগুলি অনুসরণ করে এবং300
বাই200
এর আকারের রিপোর্ট করে, যা গাছের উপরে চলে যায়।
Image( painterResource(R.drawable.hero), contentDescription = null, Modifier .fillMaxSize() .wrapContentSize() .size(50.dp) )
এই স্নিপেট নিম্নলিখিত আউটপুট উত্পাদন করে:
-
fillMaxSize
মডিফায়ার ন্যূনতম প্রস্থ এবং উচ্চতা উভয়কেই সর্বাধিক মান - প্রস্থে300dp
এবং উচ্চতায়200dp
সেট করতে সীমাবদ্ধতাগুলিকে খাপ খায়। -
wrapContentSize
সংশোধক সর্বনিম্ন সীমাবদ্ধতা পুনরায় সেট করে। সুতরাং,fillMaxSize
ফলে নির্দিষ্ট সীমাবদ্ধতা দেখা দিলে,wrapContentSize
এটিকে আবার সীমাবদ্ধ সীমাবদ্ধতায় পুনরায় সেট করে । নিম্নলিখিত নোডটি এখন আবার পুরো স্থান নিতে পারে, বা পুরো স্থানের চেয়ে ছোট হতে পারে। -
size
সংশোধক সীমাবদ্ধতাগুলিকে সর্বনিম্ন এবং সর্বাধিক50
সীমাতে সেট করে। -
Image
50
বাই50
আকারে সমাধান করে এবংsize
পরিবর্তনকারী সেটিকে এগিয়ে দেয়। -
wrapContentSize
সংশোধকের একটি বিশেষ সম্পত্তি আছে। এটি তার সন্তানকে নিয়ে যায় এবং এটিকে পাস করা উপলব্ধ সর্বনিম্ন সীমার কেন্দ্রে রাখে । এটি তার পিতামাতার সাথে যে আকারে যোগাযোগ করে তা এইভাবে এটিতে প্রবেশ করা ন্যূনতম সীমার সমান।
মাত্র তিনটি সংশোধক একত্রিত করে, আপনি কম্পোজেবলের জন্য একটি আকার সংজ্ঞায়িত করতে পারেন এবং এটিকে এর প্যারেন্টে কেন্দ্র করতে পারেন।
Image( painterResource(R.drawable.hero), contentDescription = null, Modifier .clip(CircleShape) .padding(10.dp) .size(100.dp) )
এই স্নিপেট নিম্নলিখিত আউটপুট উত্পাদন করে:
-
clip
মডিফায়ার সীমাবদ্ধতা পরিবর্তন করে না।-
padding
মডিফায়ার সর্বোচ্চ সীমাবদ্ধতা কমিয়ে দেয়। -
size
সংশোধক100dp
তে সমস্ত সীমাবদ্ধতা সেট করে। -
Image
সেই সীমাবদ্ধতাগুলি মেনে চলে এবং100
বাই100dp
আকারের রিপোর্ট করে৷ -
padding
সংশোধক সমস্ত আকারে10dp
যোগ করে, তাই এটি রিপোর্ট করা প্রস্থ এবং উচ্চতা20dp
দ্বারা বৃদ্ধি করে। - এখন অঙ্কন পর্যায়ে,
clip
মডিফায়ার120
বাই120dp
এর ক্যানভাসে কাজ করে। সুতরাং, এটি সেই আকারের একটি বৃত্তের মুখোশ তৈরি করে । -
padding
মডিফায়ার তার বিষয়বস্তুকে সব আকারে10dp
দ্বারা ইনসেট করে, তাই এটি ক্যানভাসের আকার100
বাই100dp
এ কমিয়ে দেয়। - সেই ক্যানভাসে
Image
আঁকা হয়েছে। ছবিটি120dp
এর মূল বৃত্তের উপর ভিত্তি করে ক্লিপ করা হয়েছে, তাই আউটপুটটি একটি অ-গোলাকার ফলাফল।
-
কম্পোজে, আপনি একটি কম্পোজেবলের চেহারা এবং অনুভূতি পরিবর্তন করতে একাধিক মডিফায়ারকে একসাথে চেইন করতে পারেন। এই সংশোধক চেইনগুলি কম্পোজেবলগুলিতে পাস করা সীমাবদ্ধতাগুলিকে প্রভাবিত করতে পারে, যা প্রস্থ এবং উচ্চতার সীমা নির্ধারণ করে।
এই পৃষ্ঠাটি বর্ণনা করে যে কীভাবে চেইনড মডিফায়ার সীমাবদ্ধতাগুলিকে প্রভাবিত করে এবং ফলস্বরূপ, কম্পোজেবলের পরিমাপ এবং স্থাপন করা হয়।
UI ট্রিতে সংশোধক
সংশোধকগুলি কীভাবে একে অপরকে প্রভাবিত করে তা বোঝার জন্য, UI ট্রিতে তারা কীভাবে উপস্থিত হয় তা কল্পনা করা সহায়ক, যা রচনা পর্যায়ে উত্পন্ন হয়। আরও তথ্যের জন্য, রচনা বিভাগটি দেখুন।
UI ট্রিতে, আপনি লেআউট নোডগুলির জন্য মোড়ক নোড হিসাবে পরিবর্তনকারীদের কল্পনা করতে পারেন:

একটি কম্পোজেবলে একাধিক মডিফায়ার যোগ করলে মডিফায়ারের একটি চেইন তৈরি হয়। আপনি যখন একাধিক মডিফায়ারকে চেইন করেন, তখন প্রতিটি মডিফায়ার নোড বাকি চেইন এবং লেআউট নোডকে এর মধ্যে মুড়ে দেয় । উদাহরণস্বরূপ, আপনি যখন একটি clip
এবং একটি size
পরিবর্তনকারীকে চেইন করেন, তখন clip
সংশোধক নোডটি size
পরিবর্তনকারী নোডকে মোড়ানো হয়, যা তারপরে Image
লেআউট নোডটিকে মোড়ানো হয়।
লেআউট পর্বে, গাছের সাথে চলার অ্যালগরিদম একই থাকে, তবে প্রতিটি মডিফায়ার নোডও পরিদর্শন করা হয়। এইভাবে, একটি সংশোধক সংশোধক বা লেআউট নোডের আকারের প্রয়োজনীয়তা এবং স্থান নির্ধারণ করতে পারে যা এটি মোড়ানো হয়।
চিত্র 2-এ যেমন দেখানো হয়েছে, Image
এবং Text
কম্পোজেবলের বাস্তবায়নে একটি একক লেআউট নোড মোড়ানো মডিফায়ারের একটি চেইন থাকে। Row
এবং Column
প্রয়োগগুলি কেবলমাত্র লেআউট নোড যা বর্ণনা করে যে কীভাবে তাদের বাচ্চাদের লেআউট করতে হয়।

সংক্ষিপ্ত করতে:
- সংশোধক একটি একক সংশোধক বা লেআউট নোড মোড়ানো।
- লেআউট নোড একাধিক চাইল্ড নোড লেআউট করতে পারে।
নিম্নোক্ত বিভাগগুলি বর্ণনা করে যে কীভাবে এই মানসিক মডেলটি মডিফায়ার চেইনিং সম্পর্কে যুক্তির জন্য ব্যবহার করতে হয় এবং কীভাবে এটি কম্পোজেবলের আকারকে প্রভাবিত করে।
লেআউট পর্বে সীমাবদ্ধতা
লেআউট ফেজ প্রতিটি লেআউট নোডের প্রস্থ, উচ্চতা এবং x, y স্থানাঙ্ক খুঁজে পেতে একটি তিন-পদক্ষেপ অ্যালগরিদম অনুসরণ করে:
- শিশুদের পরিমাপ করুন : একটি নোড তার শিশুদের পরিমাপ করে, যদি থাকে।
- নিজের আকার নির্ধারণ করুন : এই পরিমাপের উপর ভিত্তি করে, একটি নোড তার নিজের আকারের উপর সিদ্ধান্ত নেয়।
- শিশুদের রাখুন : প্রতিটি চাইল্ড নোড একটি নোডের নিজস্ব অবস্থানের সাপেক্ষে স্থাপন করা হয়।
Constraints
অ্যালগরিদমের প্রথম দুটি ধাপে নোডের জন্য সঠিক মাপ খুঁজে পেতে সাহায্য করে। সীমাবদ্ধতা একটি নোডের প্রস্থ এবং উচ্চতার জন্য সর্বনিম্ন এবং সর্বোচ্চ সীমা নির্ধারণ করে। যখন নোড তার আকারের উপর সিদ্ধান্ত নেয়, তখন তার পরিমাপ করা আকার এই আকারের সীমার মধ্যে হওয়া উচিত।
সীমাবদ্ধতার প্রকার
একটি সীমাবদ্ধতা নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
- আবদ্ধ : নোডের সর্বোচ্চ এবং সর্বনিম্ন প্রস্থ এবং উচ্চতা রয়েছে।

- সীমাহীন : নোড কোন আকারে সীমাবদ্ধ নয়। সর্বাধিক প্রস্থ এবং উচ্চতা সীমা অসীম সেট করা হয়.

- সঠিক : নোডটিকে একটি সঠিক আকারের প্রয়োজনীয়তা অনুসরণ করতে বলা হয়। সর্বনিম্ন এবং সর্বোচ্চ সীমা একই মান সেট করা হয়.

- সংমিশ্রণ : নোডটি উপরের সীমাবদ্ধতার প্রকারের সংমিশ্রণ অনুসরণ করে। উদাহরণস্বরূপ, একটি সীমাবদ্ধতা একটি সীমাহীন সর্বাধিক উচ্চতার অনুমতি দেওয়ার সময় প্রস্থকে আবদ্ধ করতে পারে, বা একটি সঠিক প্রস্থ সেট করে তবে একটি আবদ্ধ উচ্চতা প্রদান করতে পারে।

পরবর্তী বিভাগে বর্ণনা করা হয়েছে কিভাবে এই সীমাবদ্ধতাগুলি একজন পিতামাতা থেকে একটি সন্তানের কাছে চলে যায়।
পিতামাতা থেকে সন্তানের কাছে কীভাবে সীমাবদ্ধতাগুলি প্রেরণ করা হয়
লেআউট পর্বে সীমাবদ্ধতায় বর্ণিত অ্যালগরিদমের প্রথম ধাপের সময়, UI ট্রিতে সীমাবদ্ধতাগুলি পিতামাতা থেকে সন্তানের কাছে পাঠানো হয়।
যখন একটি অভিভাবক নোড তার সন্তানদের পরিমাপ করে, তখন এটি প্রতিটি শিশুকে এই সীমাবদ্ধতাগুলি প্রদান করে যাতে তারা জানতে পারে যে তারা কত বড় বা ছোট হতে পারে। তারপর, যখন এটি নিজের আকার নির্ধারণ করে, তখন এটি তার নিজের পিতামাতার দ্বারা পাস করা সীমাবদ্ধতাগুলিও মেনে চলে।
একটি উচ্চ স্তরে, অ্যালগরিদম নিম্নলিখিত উপায়ে কাজ করে:
- এটি আসলে যে আকারটি দখল করতে চায় তা নির্ধারণ করতে, UI গাছের রুট নোড তার বাচ্চাদের পরিমাপ করে এবং একই সীমাবদ্ধতাগুলি তার প্রথম সন্তানের কাছে ফরোয়ার্ড করে।
- যদি শিশুটি এমন একটি সংশোধক হয় যা পরিমাপকে প্রভাবিত করে না, তবে এটি সীমাবদ্ধতাগুলিকে পরবর্তী সংশোধকের কাছে প্রেরণ করে। পরিমাপকে প্রভাবিত করে এমন একটি সংশোধক না পৌঁছালে সীমাবদ্ধতাগুলি সংশোধক শৃঙ্খলে যেমন-ই চলে যায়। সীমাবদ্ধতাগুলি তারপর সেই অনুযায়ী পুনরায় আকার দেওয়া হয়।
- একবার একটি নোড পৌঁছে গেলে যেখানে কোনও সন্তান নেই (একটি "লিফ নোড" হিসাবে উল্লেখ করা হয়), এটি পাস করা সীমাবদ্ধতার উপর ভিত্তি করে এর আকার নির্ধারণ করে এবং এই সমাধান করা আকারটি তার পিতামাতার কাছে ফেরত দেয়।
- পিতামাতা এই সন্তানের পরিমাপের উপর ভিত্তি করে তার সীমাবদ্ধতাগুলিকে মানিয়ে নেয় এবং এই সামঞ্জস্যপূর্ণ সীমাবদ্ধতার সাথে তার পরবর্তী সন্তানকে ডাকে।
- একবার অভিভাবকের সমস্ত সন্তান পরিমাপ করা হলে, অভিভাবক নোড তার নিজের আকারের উপর সিদ্ধান্ত নেয় এবং তার নিজের পিতামাতার সাথে যোগাযোগ করে।
- এইভাবে, পুরো গাছটি প্রথমে গভীরতা অতিক্রম করা হয়। অবশেষে, সমস্ত নোড তাদের আকারের উপর সিদ্ধান্ত নিয়েছে, এবং পরিমাপ পদক্ষেপ সম্পন্ন হয়েছে।
একটি গভীর উদাহরণের জন্য, সীমাবদ্ধতা এবং সংশোধনকারী অর্ডার ভিডিও দেখুন।
সংশোধক যা সীমাবদ্ধতাকে প্রভাবিত করে
আপনি পূর্ববর্তী বিভাগে শিখেছেন যে কিছু সংশোধক সীমাবদ্ধতার আকারকে প্রভাবিত করতে পারে। নিম্নলিখিত বিভাগগুলি নির্দিষ্ট সংশোধকদের বর্ণনা করে যা সীমাবদ্ধতাকে প্রভাবিত করে।
size
পরিবর্তনকারী
size
পরিবর্তনকারী সামগ্রীর পছন্দসই আকার ঘোষণা করে।
উদাহরণস্বরূপ, নিম্নলিখিত UI ট্রিটি 200dp
দ্বারা 300dp
এর একটি পাত্রে রেন্ডার করা উচিত। সীমাবদ্ধতাগুলি আবদ্ধ, 100dp
এবং 300dp
এর মধ্যে প্রস্থ এবং 100dp
এবং 200dp
মধ্যে উচ্চতাকে অনুমতি দেয়:

size
সংশোধক আগত সীমাবদ্ধতাকে মানিয়ে নেয় যাতে এটিতে পাস করা মানটি মেলে। এই উদাহরণে, মান হল 150dp
:

size
সংশোধক 150dp
এ সীমাবদ্ধতা সামঞ্জস্য করে।যদি প্রস্থ এবং উচ্চতা ক্ষুদ্রতম সীমাবদ্ধতার চেয়ে ছোট হয়, বা সবচেয়ে বড় সীমাবদ্ধতার চেয়ে বড় হয়, তাহলে সংশোধকটি পাস করা সীমাবদ্ধতাগুলির সাথে যতটা ঘনিষ্ঠভাবে মেলে এবং এখনও পাস করা সীমাবদ্ধতাগুলি মেনে চলে:

size
সংশোধক যতটা সম্ভব ঘনিষ্ঠভাবে পাস করা সীমাবদ্ধতা মেনে চলে। মনে রাখবেন যে একাধিক size
পরিবর্তনকারীকে চেইন করা কাজ করে না। প্রথম size
সংশোধক একটি নির্দিষ্ট মানের সর্বনিম্ন এবং সর্বোচ্চ উভয় সীমাবদ্ধতা সেট করে। এমনকি যদি দ্বিতীয় আকারের সংশোধক একটি ছোট বা বড় আকারের অনুরোধ করে, তবুও এটিকে পাস করা সঠিক সীমাগুলি মেনে চলতে হবে, তাই এটি সেই মানগুলিকে ওভাররাইড করবে না:

size
সংশোধকগুলির একটি চেইন, যেখানে দ্বিতীয় মানটি ( 50dp
) এ পাস করেছে প্রথম মান ( 100dp
)টিকে ওভাররাইড করে না। requiredSize
পরিবর্তনকারী
ইনকামিং সীমাবদ্ধতাগুলি ওভাররাইড করার জন্য আপনার নোডের প্রয়োজন হলে size
পরিবর্তে requiredSize
মডিফায়ার ব্যবহার করুন। requiredSize
মডিফায়ার আগত সীমাবদ্ধতাগুলি প্রতিস্থাপন করে এবং আপনার সঠিক সীমা হিসাবে নির্দিষ্ট করা আকারটি পাস করে।
যখন আকারটি গাছের দিকে ফিরে যায়, তখন শিশু নোড উপলভ্য স্থানটিতে কেন্দ্রীভূত হবে:

size
মডিফায়ার থেকে আগত সীমাবদ্ধতাগুলি requiredSize
মডিফায়ার ওভাররাইডিং। width
এবং height
সংশোধক
size
সংশোধক সীমাবদ্ধতার প্রস্থ এবং উচ্চতা উভয়কেই খাপ খায়। width
সংশোধক দিয়ে, আপনি একটি নির্দিষ্ট প্রস্থ সেট করতে পারেন তবে উচ্চতাটি নির্বিঘ্নে রেখে দিতে পারেন। একইভাবে, height
সংশোধক সহ, আপনি একটি নির্দিষ্ট উচ্চতা সেট করতে পারেন, তবে প্রস্থটি নির্বিঘ্নে রেখে দিতে পারেন:

height
নির্ধারণকারী width
সংশোধক এবং উচ্চতা সংশোধক। sizeIn
মডিফায়ার
sizeIn
মডিফায়ার আপনাকে প্রস্থ এবং উচ্চতার জন্য সঠিক ন্যূনতম এবং সর্বাধিক সীমাবদ্ধতা সেট করতে দেয়। আপনার সীমাবদ্ধতার উপর সূক্ষ্ম-দানাযুক্ত নিয়ন্ত্রণের প্রয়োজন হলে sizeIn
মডিফায়ারটি ব্যবহার করুন।

minWidth
, maxWidth
, minHeight
এবং maxHeight
সেট সহ sizeIn
মডিফায়ার।উদাহরণ
এই বিভাগটি শৃঙ্খলাবদ্ধ সংশোধকগুলির সাথে বেশ কয়েকটি কোড স্নিপেটগুলি থেকে আউটপুট দেখায় এবং ব্যাখ্যা করে।
Image( painterResource(R.drawable.hero), contentDescription = null, Modifier .fillMaxSize() .size(50.dp) )
এই স্নিপেট নিম্নলিখিত আউটপুট উত্পাদন করে:
-
fillMaxSize
মডিফায়ার ন্যূনতম প্রস্থ এবং উচ্চতা উভয়কে সর্বাধিক মান - প্রস্থে300dp
এবং উচ্চতা200dp
উভয়কে সেট করতে সীমাবদ্ধতাগুলি পরিবর্তন করে। - যদিও
size
সংশোধক50dp
আকার ব্যবহার করতে চায়, তবুও এটি আগত ন্যূনতম সীমাবদ্ধতাগুলি মেনে চলতে হবে। সুতরাংsize
মডিফায়ার200
দ্বারা300
এর সঠিক সীমাবদ্ধতার সীমাও আউটপুট করবে, কার্যকরভাবেsize
সংশোধকটিতে প্রদত্ত মানটিকে উপেক্ষা করবে। -
Image
এই সীমানাগুলি অনুসরণ করে এবং300
বাই200
এর আকারে রিপোর্ট করে, যা গাছের উপরে সমস্ত পথ পেরিয়ে যায়।
Image( painterResource(R.drawable.hero), contentDescription = null, Modifier .fillMaxSize() .wrapContentSize() .size(50.dp) )
এই স্নিপেট নিম্নলিখিত আউটপুট উত্পাদন করে:
-
fillMaxSize
মডিফায়ার সর্বনিম্ন প্রস্থ এবং উচ্চতা উভয়কে সর্বাধিক মান - প্রস্থে300dp
এবং উচ্চতা200dp
উভয়কে সেট করার সীমাবদ্ধতাগুলিকে অভিযোজিত করে। -
wrapContentSize
মডিফায়ার ন্যূনতম সীমাবদ্ধতাগুলি পুনরায় সেট করে। সুতরাং,fillMaxSize
ফলে স্থির প্রতিবন্ধকতা দেখা দেয়,wrapContentSize
এটিকে পুনরায় সীমাবদ্ধ করে সীমাবদ্ধ করে । নিম্নলিখিত নোডটি এখন আবার পুরো জায়গাটি গ্রহণ করতে পারে, বা পুরো জায়গার চেয়ে ছোট হতে পারে। -
size
সংশোধক ন্যূনতম এবং সর্বোচ্চ50
এর সীমানায় সীমাবদ্ধতাগুলি সেট করে। -
Image
50
বাই50
এর আকারে সমাধান করে এবংsize
সংশোধক এটি এগিয়ে দেয়। -
wrapContentSize
মডিফায়ার একটি বিশেষ সম্পত্তি আছে। এটি তার সন্তানকে নিয়ে যায় এবং এটি উপলভ্য ন্যূনতম সীমানার কেন্দ্রে রাখে যা এটিতে গিয়েছিল। এটি তার পিতামাতার সাথে যে আকারটি যোগাযোগ করে তা এইভাবে ন্যূনতম সীমানার সমান।
মাত্র তিনটি সংশোধককে একত্রিত করে আপনি কমপোজেবলের জন্য একটি আকার সংজ্ঞায়িত করতে পারেন এবং এটি তার পিতামাতার মধ্যে কেন্দ্র করে।
Image( painterResource(R.drawable.hero), contentDescription = null, Modifier .clip(CircleShape) .padding(10.dp) .size(100.dp) )
এই স্নিপেট নিম্নলিখিত আউটপুট উত্পাদন করে:
-
clip
মডিফায়ার সীমাবদ্ধতাগুলি পরিবর্তন করে না।-
padding
মডিফায়ার সর্বাধিক সীমাবদ্ধতা হ্রাস করে। -
size
সংশোধক100dp
সমস্ত সীমাবদ্ধতা সেট করে। -
Image
সেই সীমাবদ্ধতাগুলিকে মেনে চলে এবং100dp
দ্বারা100
এর আকারের প্রতিবেদন করে। -
padding
মডিফায়ার সমস্ত আকারে10dp
যুক্ত করে, সুতরাং এটি20dp
রিপোর্ট প্রস্থ এবং উচ্চতা বৃদ্ধি করে। - এখন অঙ্কন পর্যায়ে,
clip
মডিফায়ার120
বাই120dp
এর ক্যানভাসে কাজ করে। সুতরাং, এটি সেই আকারের একটি বৃত্তের মুখোশ তৈরি করে । -
padding
মডিফায়ার তারপরে সমস্ত আকারে10dp
দ্বারা এর সামগ্রীটি ইনসেট করে, সুতরাং এটি ক্যানভাসের আকারকে 100100dp
দ্বারা100
এ নামিয়ে দেয়। -
Image
সেই ক্যানভাসে আঁকা। চিত্রটি120dp
মূল বৃত্তের উপর ভিত্তি করে ক্লিপ করা হয়েছে, সুতরাং আউটপুটটি একটি নন-রাউন্ড ফলাফল।
-
রচনাটিতে, আপনি একটি কম্পোজেবলের চেহারা এবং অনুভূতি পরিবর্তন করতে একাধিক সংশোধককে একসাথে চেইন করতে পারেন। এই সংশোধক চেইনগুলি কম্পোজেবলগুলিতে পাস হওয়া সীমাবদ্ধতাগুলিকে প্রভাবিত করতে পারে, যা প্রস্থ এবং উচ্চতার সীমা সংজ্ঞায়িত করে।
এই পৃষ্ঠাটি বর্ণনা করে যে শৃঙ্খলিত পরিবর্তনকারীরা কীভাবে সীমাবদ্ধতাগুলিকে প্রভাবিত করে এবং পরিবর্তে, কমপোজেবলগুলির পরিমাপ এবং স্থান নির্ধারণ করে।
ইউআই গাছের পরিবর্তনকারী
সংশোধনকারীরা একে অপরকে কীভাবে প্রভাবিত করে তা বোঝার জন্য, তারা কীভাবে ইউআই ট্রিতে প্রদর্শিত হয় তা কল্পনা করা সহায়ক, যা রচনা পর্বের সময় উত্পাদিত হয়। আরও তথ্যের জন্য, রচনা বিভাগটি দেখুন।
ইউআই ট্রিতে, আপনি লেআউট নোডগুলির জন্য মোড়ক নোড হিসাবে মডিফায়ারগুলি কল্পনা করতে পারেন:

একটি কমপোজেবলের সাথে একাধিক সংশোধক যুক্ত করা মডিফায়ারগুলির একটি চেইন তৈরি করে। আপনি যখন একাধিক সংশোধককে চেইন করেন, প্রতিটি মডিফায়ার নোডের বাকী চেইন এবং লেআউট নোডের মধ্যে আবৃত হয় । উদাহরণস্বরূপ, আপনি যখন একটি clip
এবং একটি size
সংশোধককে চেইন করেন, তখন clip
মডিফায়ার নোড size
মডিফায়ার নোডটি মোড়ানো হয়, যা পরে Image
বিন্যাস নোডটি মোড়ানো।
লেআউট পর্যায়ে, গাছটি হাঁটতে থাকা অ্যালগরিদম একই থাকে তবে প্রতিটি সংশোধক নোডও পরিদর্শন করা হয়। এইভাবে, একটি সংশোধক এটি মোড়ানো মডিফায়ার বা লেআউট নোডের আকারের প্রয়োজনীয়তা এবং স্থান নির্ধারণ করতে পারে।
চিত্র 2 -তে দেখানো হয়েছে, Image
এবং Text
কম্পোজেবলগুলির বাস্তবায়নে নিজেরাই একটি একক লেআউট নোড মোড়ানো মডিফায়ারগুলির একটি শৃঙ্খলা নিয়ে গঠিত। Row
এবং Column
বাস্তবায়নগুলি কেবল লেআউট নোড যা তাদের বাচ্চাদের কীভাবে স্থাপন করতে পারে তা বর্ণনা করে।

সংক্ষিপ্ত করতে:
- মডিফায়ারগুলি একটি একক সংশোধক বা লেআউট নোড মোড়ানো।
- লেআউট নোডগুলি একাধিক শিশু নোড রাখতে পারে।
নিম্নলিখিত বিভাগগুলি বর্ণনা করে যে কীভাবে এই মানসিক মডেলটি মডিফায়ার চেইনিং সম্পর্কে যুক্তিযুক্ত এবং কীভাবে এটি কম্পোজেবলের আকারকে প্রভাবিত করে তা ব্যবহার করবেন।
বিন্যাস পর্যায়ে সীমাবদ্ধতা
লেআউট পর্বটি প্রতিটি লেআউট নোডের প্রস্থ, উচ্চতা এবং এক্স, ওয়াই সমন্বয় সন্ধান করতে একটি তিন-পদক্ষেপ অ্যালগরিদম অনুসরণ করে:
- শিশুদের পরিমাপ করুন : একটি নোড তার বাচ্চাদের পরিমাপ করে, যদি থাকে।
- নিজস্ব আকার নির্ধারণ করুন : এই পরিমাপের উপর ভিত্তি করে, একটি নোড তার নিজস্ব আকারে সিদ্ধান্ত নেয়।
- বাচ্চাদের রাখুন : প্রতিটি শিশু নোড একটি নোডের নিজস্ব অবস্থানের সাথে সম্পর্কিত।
Constraints
অ্যালগরিদমের প্রথম দুটি ধাপে নোডগুলির জন্য সঠিক আকারগুলি খুঁজে পেতে সহায়তা করে। সীমাবদ্ধতাগুলি নোডের প্রস্থ এবং উচ্চতার জন্য সর্বনিম্ন এবং সর্বাধিক সীমা সংজ্ঞায়িত করে। নোড যখন এর আকারে সিদ্ধান্ত নেয়, তখন এর পরিমাপ করা আকারটি এই আকারের সীমার মধ্যে পড়তে হবে।
সীমাবদ্ধতার ধরণ
একটি বাধা নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
- সীমাবদ্ধ : নোডের সর্বাধিক এবং সর্বনিম্ন প্রস্থ এবং উচ্চতা রয়েছে।

- সীমাহীন : নোডটি কোনও আকারে সীমাবদ্ধ নয়। সর্বাধিক প্রস্থ এবং উচ্চতার সীমা অনন্ত সেট করা হয়।

- সঠিক : নোডকে সঠিক আকারের প্রয়োজনীয়তা অনুসরণ করতে বলা হয়। সর্বনিম্ন এবং সর্বাধিক সীমা একই মান সেট করা হয়।

- সংমিশ্রণ : নোড উপরের সীমাবদ্ধতার ধরণের সংমিশ্রণ অনুসরণ করে। উদাহরণস্বরূপ, একটি সীমাবদ্ধতা একটি সীমাহীন সর্বাধিক উচ্চতার জন্য অনুমতি দেওয়ার সময় প্রস্থকে আবদ্ধ করতে পারে, বা একটি সঠিক প্রস্থ সেট করে তবে একটি সীমাবদ্ধ উচ্চতা সরবরাহ করে।

পরবর্তী বিভাগটি বর্ণনা করে যে কীভাবে এই সীমাবদ্ধতাগুলি পিতামাতার কাছ থেকে সন্তানের কাছে চলে যায়।
বাবা -মা থেকে সন্তানের কাছে কীভাবে বাধা দেওয়া হয়
লেআউট পর্যায়ে সীমাবদ্ধতায় বর্ণিত অ্যালগরিদমের প্রথম ধাপে, ইউআই গাছের পিতামাতার থেকে সন্তানের মধ্যে সীমাবদ্ধতাগুলি চলে যায়।
যখন কোনও পিতামাতার নোড তার বাচ্চাদের পরিমাপ করে, তখন এটি প্রতিটি শিশুকে এই সীমাবদ্ধতা সরবরাহ করে যাতে তাদের জানতে দেয় যে তারা কতটা বড় বা ছোট হতে পারে। তারপরে, যখন এটি তার নিজস্ব আকারের সিদ্ধান্ত নেয়, তখন এটি তার নিজের পিতামাতার দ্বারা পাস করা সীমাবদ্ধতাগুলিও মেনে চলে।
একটি উচ্চ স্তরে, অ্যালগরিদম নিম্নলিখিত উপায়ে কাজ করে:
- এটি আসলে যে আকারটি দখল করতে চায় তা স্থির করার জন্য, ইউআই গাছের মূল নোড তার বাচ্চাদের পরিমাপ করে এবং তার প্রথম সন্তানের কাছে একই সীমাবদ্ধতাগুলি এগিয়ে দেয়।
- যদি শিশুটি কোনও সংশোধক হয় যা পরিমাপকে প্রভাবিত করে না, তবে এটি পরবর্তী সংশোধককে সীমাবদ্ধতাগুলি এগিয়ে নিয়ে যায়। সীমাবদ্ধতাগুলি পরিবর্তিত চেইন হিসাবে এটি পাস করা হয় যতক্ষণ না কোনও সংশোধক যা পরিমাপকে প্রভাবিত করে। সীমাবদ্ধতাগুলি তখন সেই অনুযায়ী পুনরায় আকারের হয়।
- একবার নোড পৌঁছে যাওয়ার পরে কোনও বাচ্চা না থাকে ("লিফ নোড" হিসাবে পরিচিত), এটি পাস হওয়া সীমাবদ্ধতার উপর ভিত্তি করে এর আকারটি সিদ্ধান্ত নেয় এবং এই সমাধান করা আকারটি তার পিতামাতার কাছে ফিরিয়ে দেয়।
- পিতামাতারা এই সন্তানের পরিমাপের উপর ভিত্তি করে তার সীমাবদ্ধতাগুলি মানিয়ে নেয় এবং তার পরবর্তী শিশুকে এই সমন্বিত সীমাবদ্ধতার সাথে কল করে।
- একবার পিতামাতার সমস্ত শিশু পরিমাপ করা হয়ে গেলে, পিতামাতার নোড তার নিজস্ব আকারের সিদ্ধান্ত নেয় এবং এটি তার নিজের পিতামাতার সাথে যোগাযোগ করে।
- এইভাবে, পুরো গাছটি গভীরতার সাথে অনুসরণ করা হয়। অবশেষে, সমস্ত নোড তাদের আকার সম্পর্কে সিদ্ধান্ত নিয়েছে এবং পরিমাপের পদক্ষেপটি সম্পন্ন হয়েছে।
গভীরতার উদাহরণের জন্য, সীমাবদ্ধতা এবং সংশোধক অর্ডার ভিডিও দেখুন।
সীমাবদ্ধতাগুলিকে প্রভাবিত করে এমন পরিবর্তনকারী
আপনি পূর্ববর্তী বিভাগে শিখেছেন যে কিছু সংশোধক সীমাবদ্ধতার আকারকে প্রভাবিত করতে পারে। নিম্নলিখিত বিভাগগুলি নির্দিষ্ট সংশোধকগুলি বর্ণনা করে যা সীমাবদ্ধতাগুলিকে প্রভাবিত করে।
size
সংশোধক
size
সংশোধক সামগ্রীর পছন্দসই আকার ঘোষণা করে।
উদাহরণস্বরূপ, নিম্নলিখিত ইউআই গাছটি 200dp
300dp
একটি ধারকটিতে রেন্ডার করা উচিত। সীমাবদ্ধতাগুলি সীমাবদ্ধ, 100dp
এবং 300dp
এর মধ্যে প্রস্থ এবং 100dp
এবং 200dp
এর মধ্যে উচ্চতা দেয়:

size
সংশোধক এটির সাথে পাস করা মানটির সাথে মেলে আগত সীমাবদ্ধতাগুলিকে অভিযোজিত করে। এই উদাহরণে, মানটি 150dp
:

size
সংশোধক 150dp
সীমাবদ্ধতা সামঞ্জস্য করে।যদি প্রস্থ এবং উচ্চতা ক্ষুদ্রতম সীমাবদ্ধতা আবদ্ধের চেয়ে ছোট, বা বৃহত্তম সীমাবদ্ধতা আবদ্ধের চেয়ে বড় হয় তবে সংশোধকটি পাস হওয়া সীমাবদ্ধতার সাথে মেনে চলার সময় যতটা সম্ভব নিকটবর্তী সীমাবদ্ধতার সাথে মেলে:

size
সংশোধক যতটা সম্ভব ঘনিষ্ঠভাবে পাস করা সীমাবদ্ধতা মেনে চলছে। নোট করুন যে একাধিক size
মডিফায়ার চেইন করা কাজ করে না। প্রথম size
সংশোধক একটি নির্দিষ্ট মানতে সর্বনিম্ন এবং সর্বোচ্চ উভয় সীমাবদ্ধতা সেট করে। এমনকি যদি দ্বিতীয় আকারের সংশোধক একটি ছোট বা বৃহত্তর আকারের অনুরোধ করে তবে এটি এখনও সঠিক সীমাটি মেনে চলতে হবে, সুতরাং এটি সেই মানগুলি ওভাররাইড করবে না:

size
মডিফায়ারগুলির একটি চেইন, যেখানে দ্বিতীয় মানটি ( 50dp
) এ পাস হয়েছে তা প্রথম মান ( 100dp
) ওভাররাইড করে না। মডিফায়ার requiredSize
আগত সীমাবদ্ধতাগুলি ওভাররাইড করার জন্য আপনার নোডের প্রয়োজন হলে size
পরিবর্তে requiredSize
মডিফায়ার ব্যবহার করুন। requiredSize
মডিফায়ার আগত সীমাবদ্ধতাগুলি প্রতিস্থাপন করে এবং আপনার সঠিক সীমা হিসাবে নির্দিষ্ট করা আকারটি পাস করে।
যখন আকারটি গাছের দিকে ফিরে যায়, তখন শিশু নোড উপলভ্য স্থানটিতে কেন্দ্রীভূত হবে:

size
মডিফায়ার থেকে আগত সীমাবদ্ধতাগুলি requiredSize
মডিফায়ার ওভাররাইডিং। width
এবং height
সংশোধক
size
সংশোধক সীমাবদ্ধতার প্রস্থ এবং উচ্চতা উভয়কেই খাপ খায়। width
সংশোধক দিয়ে, আপনি একটি নির্দিষ্ট প্রস্থ সেট করতে পারেন তবে উচ্চতাটি নির্বিঘ্নে রেখে দিতে পারেন। একইভাবে, height
সংশোধক সহ, আপনি একটি নির্দিষ্ট উচ্চতা সেট করতে পারেন, তবে প্রস্থটি নির্বিঘ্নে রেখে দিতে পারেন:

height
নির্ধারণকারী width
সংশোধক এবং উচ্চতা সংশোধক। sizeIn
মডিফায়ার
sizeIn
মডিফায়ার আপনাকে প্রস্থ এবং উচ্চতার জন্য সঠিক ন্যূনতম এবং সর্বাধিক সীমাবদ্ধতা সেট করতে দেয়। আপনার সীমাবদ্ধতার উপর সূক্ষ্ম-দানাযুক্ত নিয়ন্ত্রণের প্রয়োজন হলে sizeIn
মডিফায়ারটি ব্যবহার করুন।

minWidth
, maxWidth
, minHeight
এবং maxHeight
সেট সহ sizeIn
মডিফায়ার।উদাহরণ
এই বিভাগটি শৃঙ্খলাবদ্ধ সংশোধকগুলির সাথে বেশ কয়েকটি কোড স্নিপেটগুলি থেকে আউটপুট দেখায় এবং ব্যাখ্যা করে।
Image( painterResource(R.drawable.hero), contentDescription = null, Modifier .fillMaxSize() .size(50.dp) )
এই স্নিপেট নিম্নলিখিত আউটপুট উত্পাদন করে:
-
fillMaxSize
মডিফায়ার ন্যূনতম প্রস্থ এবং উচ্চতা উভয়কে সর্বাধিক মান - প্রস্থে300dp
এবং উচ্চতা200dp
উভয়কে সেট করতে সীমাবদ্ধতাগুলি পরিবর্তন করে। - যদিও
size
সংশোধক50dp
আকার ব্যবহার করতে চায়, তবুও এটি আগত ন্যূনতম সীমাবদ্ধতাগুলি মেনে চলতে হবে। সুতরাংsize
মডিফায়ার200
দ্বারা300
এর সঠিক সীমাবদ্ধতার সীমাও আউটপুট করবে, কার্যকরভাবেsize
সংশোধকটিতে প্রদত্ত মানটিকে উপেক্ষা করবে। -
Image
এই সীমানাগুলি অনুসরণ করে এবং300
বাই200
এর আকারে রিপোর্ট করে, যা গাছের উপরে সমস্ত পথ পেরিয়ে যায়।
Image( painterResource(R.drawable.hero), contentDescription = null, Modifier .fillMaxSize() .wrapContentSize() .size(50.dp) )
এই স্নিপেট নিম্নলিখিত আউটপুট উত্পাদন করে:
-
fillMaxSize
মডিফায়ার সর্বনিম্ন প্রস্থ এবং উচ্চতা উভয়কে সর্বাধিক মান - প্রস্থে300dp
এবং উচ্চতা200dp
উভয়কে সেট করার সীমাবদ্ধতাগুলিকে অভিযোজিত করে। -
wrapContentSize
মডিফায়ার ন্যূনতম সীমাবদ্ধতাগুলি পুনরায় সেট করে। সুতরাং,fillMaxSize
ফলে স্থির প্রতিবন্ধকতা দেখা দেয়,wrapContentSize
এটিকে পুনরায় সীমাবদ্ধ করে সীমাবদ্ধ করে । নিম্নলিখিত নোডটি এখন আবার পুরো জায়গাটি গ্রহণ করতে পারে, বা পুরো জায়গার চেয়ে ছোট হতে পারে। -
size
সংশোধক ন্যূনতম এবং সর্বোচ্চ50
এর সীমানায় সীমাবদ্ধতাগুলি সেট করে। -
Image
50
বাই50
এর আকারে সমাধান করে এবংsize
সংশোধক এটি এগিয়ে দেয়। -
wrapContentSize
মডিফায়ার একটি বিশেষ সম্পত্তি আছে। এটি তার সন্তানকে নিয়ে যায় এবং এটি উপলভ্য ন্যূনতম সীমানার কেন্দ্রে রাখে যা এটিতে গিয়েছিল। এটি তার পিতামাতার সাথে যে আকারটি যোগাযোগ করে তা এইভাবে ন্যূনতম সীমানার সমান।
মাত্র তিনটি সংশোধককে একত্রিত করে আপনি কমপোজেবলের জন্য একটি আকার সংজ্ঞায়িত করতে পারেন এবং এটি তার পিতামাতার মধ্যে কেন্দ্র করে।
Image( painterResource(R.drawable.hero), contentDescription = null, Modifier .clip(CircleShape) .padding(10.dp) .size(100.dp) )
এই স্নিপেট নিম্নলিখিত আউটপুট উত্পাদন করে:
-
clip
মডিফায়ার সীমাবদ্ধতাগুলি পরিবর্তন করে না।-
padding
মডিফায়ার সর্বাধিক সীমাবদ্ধতা হ্রাস করে। -
size
সংশোধক100dp
সমস্ত সীমাবদ্ধতা সেট করে। -
Image
সেই সীমাবদ্ধতাগুলিকে মেনে চলে এবং100dp
দ্বারা100
এর আকারের প্রতিবেদন করে। -
padding
মডিফায়ার সমস্ত আকারে10dp
যুক্ত করে, সুতরাং এটি20dp
রিপোর্ট প্রস্থ এবং উচ্চতা বৃদ্ধি করে। - এখন অঙ্কন পর্যায়ে,
clip
মডিফায়ার120
বাই120dp
এর ক্যানভাসে কাজ করে। সুতরাং, এটি সেই আকারের একটি বৃত্তের মুখোশ তৈরি করে । -
padding
মডিফায়ার তারপরে সমস্ত আকারে10dp
দ্বারা এর সামগ্রীটি ইনসেট করে, সুতরাং এটি ক্যানভাসের আকারকে 100100dp
দ্বারা100
এ নামিয়ে দেয়। -
Image
সেই ক্যানভাসে আঁকা। চিত্রটি120dp
মূল বৃত্তের উপর ভিত্তি করে ক্লিপ করা হয়েছে, সুতরাং আউটপুটটি একটি নন-রাউন্ড ফলাফল।
-