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