سؤال

ملخص
أنا أستخدم فئة قائمة لعرض مجموعة من المعلومات عموديا. كل صف من تلك الموجودة في هذه القائمة يأخذ 2 / 5th من ارتفاع الشاشة.

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

أرغب في إصلاح هذه الشفاعة عن طريق تنفيذ التمرير السلس بين إجراءات التمرير / التركيز. هل هذا ممكن مع فئة Listfield؟

مثال
أدناه هي لقطة شاشة عرض المشكلة في متناول اليد.

alt text
(مصدر: perkmobile.com.)

بمجرد أن يقوم المستخدم بالتمرير لأسفل إلى صف ListThlee، يتم "التمرير" في العرض بطريقة ثنائية للغاية، لا تمرير سلس. أعلم أن جعل ارتفاع الصف سوف يخفف أصغر هذه المشكلة، لكنني لا أريد أن أذهب بهذه الطريقة.

السؤال الرئيسي
كيف أفعل التمرير السلس في قائمة الطعام؟

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

المحلول

على افتراض أنك تريد أن يقوم المستخدم بتمرير المستخدم لأسفل 1 "انقر فوق" من كرة التتبع، ثم يتم إبراز العنصر التالي، ولكن بدلا من قفزة التمرير الفوري، تحصل على تمرير سلس لجعل العنصر الجديد مرئي (مثل في تطبيق Gmail's Gmail بلاك بيري)، عليك أن تدحرج المكونات الخاصة بك.

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

الخيط ضروري لأنه إذا كنت تفكر في ذلك، فأنت تقود الرسوم المتحركة من حدث المستخدم - يكون التمرير السلس هو حقا الرسوم المتحركة على BlackBerry، حيث يستمر لفترة أطول من الحدث الذي أثاره.

لقد كنت غامضا بعض الشيء على التفاصيل، وهذا ليس بالأمر السهل حقا القيام به، لذلك نأمل أن يساعد ذلك قليلا.

نصائح أخرى

لا توجد طريقة API الرسمية للقيام بذلك، بقدر ما أعرف، ولكن من المحتمل أن تكون قد تعيش من خلال استخدام ذكي من Nullfield (Field.Focusable)، وهو عدد BlackBerry UIS المخصص تنفيذ سلوك التركيز القسري.

سيكون نهج واحد هو استخلاص كل "قائمة قائمة" من فئة تتوافق مع المحتويات المرئية في عنصر القائمة في القائمة نفسها - وهذا من شأنه أن يجبر نظام التمرير بشكل أساسي على "القفز" على فترات أصغر بدلا من الفواصل الزمنية الكبيرة التي تمليها الانقسامات الطبيعية بين العناصر القائمة، ولديها الاستفادة الجانبية لعدم تعديل المواقع المرئية لمحتويات عنصر القائمة.

ما لم تكن ترغب في تجاوز كيفية دهمة ListField أو إنشاء غلاف الخاص بك، فستكون لديك دائما هذه المشكلة، وهذا لأن كل سطر مرئي دائما عند التمرير. حاول استخدام labelfield بدلا من ذلك.

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