سؤال

أنا أستخدم أ slidingDrawer في طلبي الذي وضعه معالجه في الأسفل عندما يكون في وضع عمودي. عندما يتحول المستخدم إلى وضع المناظر الطبيعية (عريضة)، أود الحصول على المعالج الموجود على اليسار. عندما أقوم بتغيير الاتجاه من رأسية إلى أفقية، يتم وضع المعالج على اليمين.

لقد حددت تخطيطي XML مثل هذا:

<SlidingDrawer
    android:id="@+id/l_drawer"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:handle="@+id/l_handle"
    android:content="@+id/l_content"
    android:orientation="horizontal"
    android:layout_gravity="left"
    >

أي شخص لديه فكرة عن كيفية جعله ينزلق من اليسار إلى اليمين؟

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

المحلول

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

نصائح أخرى

لقد وجدت طريقة بسيطة للقيام بذلك. كل ما عليك فعله هو تعيين دوران 180 درجة ل SlidingDrawer، والمحتوى والمقبض. يمكنك بمشابه أن تجعل slidsdrawer ينزل من الأعلى، كما فعلت هنا.

انظر إلى أمثلةي هنا، أولا من اليمين إلى اليسار، لتكون قادرة على رؤية الاختلافات.

<SlidingDrawer xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/slidingDrawer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_horizontal"
    android:handle="@+id/handle"
    android:content="@+id/content">
    <ImageView android:id="@+id/handle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />
    <ImageView android:id="@+id/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#FF0000"
        android:src="@drawable/ic_launcher" />
</SlidingDrawer>

انظر الآن إلى ما تغير لجعله انزلاق من اليسار.

<SlidingDrawer xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/slidingDrawer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_horizontal"
    android:handle="@+id/handle"
    android:content="@+id/content"
    android:rotation="180">
    <LinearLayout android:id="@+id/handle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <ImageView android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher"
            android:rotation="180" />
    </LinearLayout>
    <ImageView android:id="@+id/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#FF0000"
        android:src="@drawable/ic_launcher"
        android:rotation="180" />
</SlidingDrawer>

لاحظ أنني قمت أيضا بإنشاء LINEARLAYOUT لتعيين كمعالجة، ولم أغير دورانها، لكنني غيرت دوران طفلها. كان هذا لمنع قضية صغيرة كان لدي، ولكن كل شيء يعمل بشكل جيد وهو بسيط.

لقد قمت بإعادة كتابة فئة إلى ذلك وجعلها جزءا من مكتبة المصدر المفتوح. استغرق الأمر مني أسبوعيا تقريبا للحصول عليه بشكل صحيح. يرجى التحقق من بلدي slidertray. في aniqroid. مكتبة مفتوحة المصدر لنظام Android.

http://aniqroid.sileria.com/doc/api.

ابحث عن رابط التنزيل والوثائق الخاصة بفئة SlidesTray في الرابط أعلاه.

(الإفصاح: أنا موافقة المشروع.)

يمكنك استخدام الرمز المنشور في هذه الإجابة: أندرويد slidingdrawer من الأعلى؟

ميزات الحل المقدمات إعداد اتجاه SlidingDrawer في XML أيضا أنه بسيط يتطلب فقط فئة واحدة فقط وبعض الإضافات في ATSS.XML ومستقرة نظرا لأنها مشتقة من Androids SlidingDrawer من SDK. أنا أيضا مناقشة لماذا لم أختر Libs / الحلول الشعبية الأخرى الموجودة على الإنترنت / هكذا.

QuickLink إلى GIST: spectorientationslidingdrawer (مصدر ومثال) @ gist

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