لی اوت در اندروید بخش ۷ : آشنایی با اتریبیوت weight

این مقاله به همراه دیگر مقالات این مجموعه ۱۶ قسمتی، بر اساس آموزش ویدیویی در pluralsight به نام Android Fundamental : Layout تهیه شده است. تاریخ تولید این دوره ۲۰۱۹ است.روند منبع فوق در فهرست و محتوای مقالات، بطور کلی حفظ شده است ولی در جزئیات یک ترجمه کلمه به کلمه نیست؛ نگارش فهرست و محتوا با افزودن و دخالت همراه بوده است.بطور کلی هر جا حس شده توضیح بیشتر به درک مطلب کمک می‌کند دریغ نشده است.لی اوت در اندروید ۱ : مفاهیم اولیهلی اوت در اندروید ۲ : آشنایی با اتریبیوت های width و height لی اوت در اندروید ۳ : آشنایی با اتریبیوت های margin و padding لی اوت در اندروید ۴ : آشنایی با اتریبیوت gravity لی اوت در اندروید ۵ : آشنایی با لی اوت های پایهلی اوت در اندروید ۶ : آشنایی با LinearLayout لی اوت در اندروید ۷ : اتریبیوت weight (در حال خواندن این مقاله هستید) لی اوت در اندروید ۸ : آشنایی با FrameLayoutلی اوت در اندروید ۹ : آشنایی با RelativeLayoutلی اوت در اندروید ۱۰: آشنایی با CoordinateLayout لی اوت در اندروید ۱۱ : آشنایی با ConstraintLayoutلی اوت در اندروید ۱۲ : آشنایی با Layout Inspectorلی اوت در اندروید ۱۳ : بهینه سازی رابط کاربری لی اوت در اندروید ۱۴ : استفاده از تگ includeلی اوت در اندروید ۱۵ : استفاده از تگ mergeلی اوت در اندروید ۱۶ : استفاده از ViewStubفرض کنید میخواهیم دو تکست ویو به شکلی که نمایش داده شده اند به نسبت مساوی در طول صفحه قرار گیرند.دو تکست ویو در کنار هم و به شکل wrap_content هستند.از اتریبیوت layout_weight استفاده می‌کنیم، که یعنی اگر کل طول صفحه 2 باشد به نسبت 1 و 1 این دو ویو قرار گیرند.میتوانیم به هر المان وزنی بدهیم که معرف سهم آن المان در طول یا عرض لی اوت است.خروجی به شکل زیر خواهد بودسهم هر المان یک دوم از طول لی اوت است.دقت کنید که layout_width چون اهمیتی ندارد، صفر قرار داده شده است و به شکل خودکار بر اساس وزن هر ویو تعیین میشود.برای layout_height مقدار wrap_content قرار دادیم.اما اگر بخواهیم حالت layout_weight را برای یک لی اوت ورتیکال اعمال کنیم چون بر اساس وزن میزان ارتفاع هر کدام تعیین میشود در آنجا چیزی که باید صفر باشد layout_height است که بطور خودکار تعیین میشود.در حالت landscape هم همین نوع منطق برقرار است.در حالت landscape هم شرایط مشابهی برقرار است.برای مثال همان صفحه لاگین که در بخش قبلی طراحی کردیم را به شکل زیر اصلاح می‌کنیم، در زیر دکمه Login میخواهیم دو لینکی که وجود دارد با وزن یکسان در کنار هم قرار گیرند:خروجی نهایی مقاله قبل باید اصلاح شود. دو لینک انتهایی باید با وزن یکسان در یک ردیف قرار گیرند.برای اینکار از حالت textیا همان xml استفاده میکنیم.به هر کدام وزن 1 دادیم که سهم آنها در linearLayout پرنتشان مساوی باشد.همچنین layout_width را صفر قرار میدهیمبه وضوح دیده میشود که این دو ویو با وزن یکسان به لحاظ طولی در کنار هم قرار میگیردمثالی از وزن های نابرابر :مجموع وزن ها 3 است و سهم آنها یک سوم و دو سوم خواهد بود.یعنی اگر وزن کل طول صفحه 3 باشد (جمع دو وزن) وزن اولی 1 و وزن دومی 2 باشد که نتیجه آن را در تصویر میبینید.اگر یکی از ویوها layout_wieght داشته باشد و یکی نداشته باشد چه میشود؟یک المان وزن دارد و دیگری ندارد.المانی که بدون وزن است به اندازه content خود فضا را اشغال می‌کند و دیگر المان (های) وزن دار، بر اساس وزن(شان) از باقیمانده فضا سهم خواهند برد. اگر چند ویو داشته باشیم:فرق سمتی راستی با سمت چپی این است که فقط ویوی سمت راست و سمت چپ وزن 1 دارند پس ماکزیمم طول ممکن را اشغال میکنند و فضای باقیمانده به وسطی که بدون وزن است میرسد. در تصویر سمت چپ هر سه ویو وزن یکسان 1 دارند پس هر کدام طولی برابر با 1/3 صفحه را اشغال میکنند.در بخش بعدی به FrameLayout خواهیم پرداخت.