فهم خاصية weightSum و خاصية layout_weight

من أهم الخواص التي تساعدك في تنظيم وتوزيع العناصر داخل Layout معيّنة وبشكل متجاوب مع جميع أنواع الأجهزة، يشيع إستخدامها مع LinearLayout.

وذلك بإعطاء ال Layout قيمة معيّنة لل weightSum ولنقل “100”، ثم نقسم هذه القيمة (100) على جميع العناصر التي بداخلها بالنسب التي تناسبنا عبر خاصية layout_weight للعنصر(الإبن) الذي بداخل ال Layout (الأب).

مثلا إذا كان لدينا Layout من نوع LinearLayout وبداخلها زر (button) نريد ان نعطيه نصف حجم هذه ال Layout.

أولا :

نستخدم خاصية weightSum لل layout الأب(LinearLayout) ونسند لها قيمة “100”.

ثانيأً:

نستخدم خاصية layout_weight للعنصر الداخلي – الزر (button) – بما اننا نريده ان يشكل نصف ال Layout الأب سنسد له قيمة “50”.

ثالثاً:

  • نقوم بتصفير layout_height -جعل قيمته تساوي “0dp”- في حالة ال layout الأب إتجاهه(orientation) عمودي (vertical).
  • نقوم بتصفير layout_width -جعل قيمته تساوي “0dp”- في حالة ال layout الأب إتجاهه(orientation) أفقي(horizontal).

 

مثال:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:weightSum="100">
  <Button
    android:text="Button 50%"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:id="@+id/button1"
    android:layout_weight="50" />
</LinearLayout>

النتيجة :

 

مثال آخر:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="horizontal"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:weightSum="100">
  <Button
    android:text="Button 50%"
    android:layout_width="0dp"
    android:id="@+id/button1"
    android:layout_weight="50"
    android:layout_height="match_parent" />
</LinearLayout>

النتيجة:

السبب في الخطوة الثالثة أننا نعتمد على خاصية layout_weight في تحديد الطول او العرض، ومن مميزاته إنه يكون متجاوب مع كل الشاشات لأنه يعتمد على نسبة لا على وحدة قياس محددة.

______

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *