سؤال

لدي التصميم التالي في مكانه

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

    <LinearLayout android:orientation="vertical"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:layout_weight="1">


        <WebView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/webview" android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    </LinearLayout>

    <LinearLayout android:orientation="horizontal"  android:layout_width="fill_parent" android:layout_height="fill_parent"  android:layout_weight="13">
        <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content">
            <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1">
                    <ImageButton android:background="@null" android:id="@+id/back" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/back" android:padding="10dip" />
            </LinearLayout>

            <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1">
                <ImageButton android:background="@null" android:id="@+id/forward" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/forward" android:padding="10dip" />
            </LinearLayout>

        </LinearLayout>

        <RelativeLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent"    android:layout_weight="1" >
                <ImageButton android:background="@null" android:id="@+id/special"   android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/barcode" android:padding="10dip" android:layout_gravity="right"/>
        </RelativeLayout>




    </LinearLayout>


</LinearLayout>

لغرض هذا السؤال ، أنا قلق فقط بشأن النصف السفلي من التصميم. الآن يحتوي على 3 ImageButtons. الأول 2 ، أريد بجوار بعضها البعض محاذاة. الثالث ، أريد أن أتوافق مع الجانب الأيمن.

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

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

المحلول

التصميم غير فعال للغاية ومتضخم. أنت لا تحتاج إلى الكثير LinearLayoutس. في الواقع لا تحتاج إلى أي LinearLayout على الاطلاق.

استخدم واحدة فقط RelativeLayout. مثله.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <ImageButton android:background="@null"
        android:id="@+id/back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/back"
        android:padding="10dip"
        android:layout_alignParentLeft="true"/>
    <ImageButton android:background="@null"
        android:id="@+id/forward"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/forward"
        android:padding="10dip"
        android:layout_toRightOf="@id/back"/>
    <ImageButton android:background="@null"
        android:id="@+id/special"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/barcode"
        android:padding="10dip"
        android:layout_alignParentRight="true"/>
</RelativeLayout>

نصائح أخرى

يمكنك أن تفعل كل ذلك باستخدام واحد فقط RelativeLayout (الذي ، راجع للشغل ، لا تحتاج android:orientation معامل). لذا ، بدلاً من وجود ملف LinearLayout, ، التي تحتوي على مجموعة من الأشياء ، يمكنك أن تفعل شيئًا مثل:

<RelativeLayout>
    <ImageButton
        android:layout_width="wrap_content"
        android:id="@+id/the_first_one"
        android:layout_alignParentLeft="true"/>
    <ImageButton
        android:layout_width="wrap_content"
        android:layout_toRightOf="@+id/the_first_one"/>
    <ImageButton
        android:layout_width="wrap_content"
        android:layout_alignParentRight="true"/>
</RelativeLayout>

كما لاحظت ، هناك بعض معلمات XML مفقودة. كنت أعرض فقط المعلمات الأساسية التي كان عليك وضعها. يمكنك إكمال الباقي.

إذا كنت تريد استخدام LinearLayout, ، يمكنك القيام بالتوافق مع layout_weight مع Space عنصر.

مثل أماكن التخطيط التالية textView و textView2 بجانب بعضنا البعض و textView3 سيكون محاذاة اليمين

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Medium Text"
        android:id="@+id/textView" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Medium Text"
        android:id="@+id/textView2" />

    <Space
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="20dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Medium Text"
        android:id="@+id/textView3" />
</LinearLayout>

يمكنك تحقيق نفس التأثير بدون Space إذا كنت ستضع layout_weight إلى textView2. إنه فقط أحب الأشياء أكثر انفصالًا ، بالإضافة إلى التظاهر Space عنصر.

    <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Medium Text"
        android:id="@+id/textView2" />

لاحظ أن يجب عليك (لا يجب) تعيين layout_width صراحة لأنه سيتم إعادة حسابه وفقًا لوزنه على أي حال (نفس الطريقة التي يجب أن تضع بها ارتفاع في عناصر الرأسية LinearLayout). للحصول على نصائح أداء تخطيط أخرى انظر أندرويد تخطيط الحيل سلسلة.

هذا مثال على أ تخطيط نسبي:

RelativeLayout relativeLayout=(RelativeLayout)vi.findViewById(R.id.RelativeLayoutLeft);
                RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)relativeLayout.getLayoutParams();
                params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
                relativeLayout.setLayoutParams(params);

مع نوع آخر من التصميم (مثال LinearLayout) عليك فقط أن تتغير تخطيط نسبي إلى عن على LinearLayout.

لدعم مساحة الإصدار الأقدم يمكن استبدالها بعرض ما أدناه. أضف هذا العرض بين ما بعد اليسار الأكثر مكونًا وقبل معظم المكونات اليمنى. هذا العرض بالوزن = 1 سوف يمتد ويملأ المساحة

    <View
        android:layout_width="0dp"
        android:layout_height="20dp"
        android:layout_weight="1" />

ويرد رمز العينة الكامل هنا. لديها 4 مكونات. سيكون سهمان على الجانب الأيمن واليسرى. سيكون النص والدوران في الوسط.

    <ImageButton
        android:id="@+id/btnGenesis"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|center_vertical"
        android:layout_marginBottom="2dp"
        android:layout_marginLeft="0dp"
        android:layout_marginTop="2dp"
        android:background="@null"
        android:gravity="left"
        android:src="@drawable/prev" />

    <View
        android:layout_width="0dp"
        android:layout_height="20dp"
        android:layout_weight="1" />

    <TextView
        android:id="@+id/lblVerseHeading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:gravity="center"
        android:textSize="25sp" />

    <Spinner
        android:id="@+id/spinnerVerses"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:gravity="center"
        android:textSize="25sp" />

    <View
        android:layout_width="0dp"
        android:layout_height="20dp"
        android:layout_weight="1" />

    <ImageButton
        android:id="@+id/btnExodus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|center_vertical"
        android:layout_marginBottom="2dp"
        android:layout_marginLeft="0dp"
        android:layout_marginTop="2dp"
        android:background="@null"
        android:gravity="right"
        android:src="@drawable/next" />
</LinearLayout>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top