سؤال

لدي حاجة لإنشاء عنصر تحكم مشابه لـ uitabbar في iPhone ، والذي يجب أن يكون حاضرًا في كل نشاط من طلبي. Uitabbar أساسًا بطارية الأزرار عرض أ التبويب مثل السلوك: كل زر يخطط للنشاط.

لدي حلين لهذا:

  1. في التصميم XML لكل نشاط ، أدخل أ <LinearLayout><Button/><Button/><Button/></LinearLayout> عنصر. ثم احصل على فئة مستمعية مشتركة ستتعامل مع النقرات الزر. لذلك ، سيكون لكل نشاط مثال على هذا المستمع.

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

لست متأكدًا من الطريقة التي يجب اتباعها. من فضلك النصيحة. البدائل أيضا موضع تقدير

فيما يلي ما أفكر في النهج أعلاه:
المشكلة في النهج الأول:

  1. سوف يولد الكثير من رمز Boilerplate (FindViewByIds ، SetonClickListener إلخ)

  2. على افتراض أن هناك 5 أنشطة و 3 أزرار تبويب ، فإن العدد الإجمالي لكائنات الأزرار التي تم إنشاؤها في وقت التشغيل سيكون 5 × 3 = 15

أرغب في اتباع النهج الثاني لأن:

  1. سيتم تغليف جميع التعليمات البرمجية (الحالة والسلوك) بواسطة فئة القطعة. كود أقل من الغلاية.

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

شكرًا.

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

المحلول 2

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

نصائح أخرى

لماذا لا تستخدم تطبيق TabWidget الحالي في Android؟

http://developer.android.com/guide/tutorials/views/hello-tabwidget.html

لا يقتصر الأمر على تنفيذ العمل الإضافي الخاص بك ، فمن المحتمل أن يشعر بأنه غير في مكانه مقارنة بالتطبيقات الأخرى على المنصة.

على وجه الخصوص ، إليك بعض المشاكل التي أراها:

  1. عندما يتغير مظهر شريط علامة التبويب بسبب تحديث النظام ، سيتعين عليك إعادة كتابة التعليمات البرمجية الخاصة بك. من غير المحتمل أيضًا أن تتطابق تمامًا مع مظهر ومظهر Tab Bar المدمج. (فكر Java على OS X.)

  2. في كل مرة ينقر فيها المستخدم على علامة تبويب ، سيضيف نشاطًا آخر إلى المكدس. لا يقتصر هذا على مضيعة للذاكرة ، ولكن في كل مرة ينقر المستخدم على زر العودة على الهاتف ، ستنتقل إلى علامة التبويب السابقة. هذه ليست الطريقة التي من المفترض أن تعمل فيها شريط علامة التبويب.

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