سؤال

لدي تخطيط مشابه لتطبيق ICS Gmail للأجهزة اللوحية (ListFragment (على اليسار والمحتوى على اليمين) وكنت أتساءل كيف يمكنني البدء في إنشاء التخطيطات بحيث يكون هناك فاصل ظل بين الجزأين (كما هو الحال في تطبيق Gmail، كما هو موضح أدناه)

.Just look at that beautiful shadow!

أيضًا، بما أن هذا ينطبق على هذا السؤال، كيف يمكنني الحصول على علامة المثلث/السهم اللطيفة في تخطيط عنصر القائمة النشط؟أفترض أنه لتنفيذ ذلك، يجب أن يكذب ListView نفسه فوق "طبقة" الظل، لكن ليس لدي أي فكرة عن كيفية إنشاء ذلك.

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

المحلول

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list_row"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@drawable/list_item_selector">

    ...<!-- Rest of layout goes here -->

</RelativeLayout>

لكن السحر يأتي في list_item_selector:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/list_pressed" />
    <item android:state_activated="true" android:drawable="@drawable/list_arrow_activated"  />
    <item android:drawable="@drawable/list_default" />
</selector>

من خلال تحديد هذه العناصر كرسومات ذات 9 تصحيحات مثل هذا، يمكنك جعل كل عنصر قائمة يساهم بقيمة عرض الظل الخاص به على هذا الخط في المنتصف، وعندما يتم تنشيطه، سيتم استبدال جزء الظل هذا بسهم.آمل أن يساعد هذا شخصًا ما، لأنه ساعدني بالتأكيد!

نصائح أخرى

إنني أتطلع إلى القيام بنفس الشيء الذي تحاول القيام به؛قم بإنشاء تأثير يجعل جزءًا واحدًا "أقرب" من الآخر.

تتعامل إجابة Roboguy مع كيفية الحصول على "محدد" السهم الأبيض في عنصر القائمة؛سأحاول أن أكون أكثر تحديدًا فيما يتعلق بالظلال.يمكن رؤية مثال جيد آخر لاستخدام محددات الخلفية في الكود المصدري لتطبيق Google IO 2011. بمجرد حصولك على المصدر، انظر إلى محددات الأيقونات fragment_dashboard.xml.

فاصل الظل هو تدرج، يتم تطبيقه على الجانب الأيسر من العرض.هناك جزأين.

أولاً: "الظل" نفسه:

الدقة/shadow_left.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
    android:angle="0"
    android:startColor="#55000000" 
    android:endColor="#00000000"
    />
</shape>

ثم، لتطبيقه فعليًا على التخطيط:

تخطيط/my_lower_layer

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
<View
    android:layout_width="20dp"
    android:layout_height="fill_parent"
    android:background="@drawable/fragment_shadow_left" />
<ImageView
    android:id="@+id/imageview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true" />
</RelativeLayout>

يجب أن يتم ذلك بتخطيط نسبي (على حد علمي).إذا كنت تستخدم تخطيطًا خطيًا، فيمكنك لف التخطيط الخطي بالكامل داخل تخطيط نسبي، ثم إضافة التدرج اللوني.

لاحظ أنه إذا قمت بذلك، فإن التدرج <View> يجب أن يذهب إلى ما دون <LinearLayout>;خلاف ذلك، سيتم رسم التدرج تحت التخطيط الخطي، لذلك لن تراه.

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