سؤال

في تطبيقي، لدي تخطيطان خطيان:واحد في الأعلى، وواحد في الأسفل.

أرغب بذلك كل ما هو داخل هذه التخطيط, ، يشغل تخطيط الجزء العلوي 60% من ارتفاع الشاشة وتخطيط الجزء السفلي 40%.إليك رمز XML الخاص بي:

   <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_weight="1.0" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.6"
        android:orientation="vertical" 
         android:id="@+id/layout_top">
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="0.4" 
        android:id="@+id/layout_bottom">
    </LinearLayout>

</LinearLayout>

عندما تكون هذه التخطيطات فارغة، فلا مشكلة، فهي تحتوي على نسبة جيدة.

المشكلة هي أنني إذا وضعت عرض قائمة صغيرًا في التخطيط العلوي على سبيل المثال.عندها سيأخذ التخطيط حجم عرض القائمة ولن يحافظ على نسبة 60/40%.

أرغب في ذلك حتى لو كانت طريقة عرض القائمة الخاصة بي صغيرة (3 عناصر فقط على سبيل المثال)، فإن التخطيط يحافظ على نسبة 60%، لذا ضع بعض المساحة الفارغة ضمن طريقة عرض القائمة الخاصة بي.

لقد حاولت التغيير android:layout_height ل match_parent لكنه لا يغير شيئا.

هل كانت مفيدة؟

المحلول

حاول استخدام هذا التخطيط فهو يناسبني

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_weight="1.0" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="6"
        android:orientation="vertical" 
         android:id="@+id/layout_top"
         android:background="#FF0000">
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:orientation="vertical"
        android:layout_weight="4" 
        android:id="@+id/layout_bottom"
        android:background="#FF00FF">
    </LinearLayout>

</LinearLayout>

الحيلة هي إعداد layout_height="0dip" بدلاً من Wrap_content في الوضع الرأسي و layout_with="0dip" بدلاً من Wrap_content في الوضع الأفقي، يمكنك استخدام مجلد Layout-land لذلك.

نصائح أخرى

تخطيط_الوزن يحدد مساحة إضافية في عرض التخطيط.يجب أن تحاول قياس شاشتك أولاً مثل:

Display display = ((WindowManager) 
  getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
int width = display.getHeight();

ثم قم بإجراء بعض العمليات الحسابية مثل width*0.6 و 0.4، وبهذه الطريقة سيكون تخطيطك دائمًا بنسبة 60 إلى 40.

أتمنى أن يساعدك هذا

يحاول layout_height = 0dp في كل من الأطفال LinearLayouts.يحدث ذلك لأن لديك wrap_content والذي ربما يتجاوز layout_weight تأثير.

ببساطة في تخطيط الوالدين، استبدل android:layout_weight="1.0" مع android:weightSum="1.0"

يعمل هذا عن طريق تحديد مجموع وزن التخطيط الأصلي وأوزان التخطيطات الفرعية.يجب أن يكون وزن الأطفال مساويا لمجموع وزن الوالد.تفقد هذا http://blog.stylingandroid.com/archives/312

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top