Creazione di un controllo personalizzato o creare pulsanti in linea
-
20-09-2019 - |
Domanda
Ho la necessità di creare un controllo analogo a UITabBar in iPhone, che è quello di essere presente su ogni attività della mia candidatura. UITabBar essenzialmente è un batteria di pulsanti che mostra una come comportamento:. Ogni mappe dei pulsanti a un'attività
Ho due soluzioni per questo:
-
Nel XML layout per ogni attività, inserisco un elemento
<LinearLayout><Button/><Button/><Button/></LinearLayout>
. E poi hanno una classe comune ascoltatore che gestirà i clic sui pulsanti. Così, ogni attività avrà un'istanza di questo ascoltatore. -
Per creare una classe LinearLayout estende personalizzato Widget, mettere tutti i pulsanti come i suoi membri statici e lasciare gestire i clic sui pulsanti. Includere questo controllo personalizzato in ogni schermata.
non sono sicuro che l'approccio da seguire. Si prega di consulenza. Alternative apprezzato anche
che segue è quello che penso su approcci di cui sopra:
Il problema con il primo approccio:
-
Si genererà un sacco di codice boilerplate (findViewByIds, setOnClickListener ecc)
-
Supponendo che ci sono 5 attività e 3 pulsanti della scheda, il numero totale di oggetti Button creati in fase di esecuzione sarà di 5 x 3 = 15
Mi piacerebbe prendere la 2 ° approccio perché:
-
Tutto il codice (stato e il comportamento) sarà incapsulato dalla classe di widget. Codice Boilerplate Meno.
-
Dal momento che i pulsanti saranno membri statici, il numero totale di oggetti Button creati a runtime sarà solo tre. Anche se, i membri statici rimarranno in memoria per un tempo più lungo (fino al JVM scarica la classe), dal momento che è presente in ogni schermata Penso che questo può essere scusato il controllo.
Grazie.
Soluzione 2
Purtroppo, non ho potuto trovare un modo per personalizzare il built-in TabWidget per farlo sembrare come UITabBar. Così, ho intenzione di creare un controllo personalizzato e hanno i pulsanti come membri statici (prendono il secondo approccio). Il controllo gestirà gli scatti come previsto.
Ho notato che la premiata applicazione Plink Arte troppo ha un controllo struttura a schede che è simile a iPhone UITabBar.
Altri suggerimenti
Perché non usare l'attuazione TabWidget esistente in Android?
http://developer.android.com/guide/tutorials /views/hello-tabwidget.html
Non solo sta attuando il tuo widget proprio lavoro in più, è probabile che si sentono fuori luogo se confrontato con altre applicazioni sulla piattaforma.
In particolare, qui sono alcuni problemi che vedo:
-
Quando l'aspetto della scheda della barra modifiche a causa di un aggiornamento del sistema, dovrete ri-scrivere il codice. Lei è anche improbabile che corrispondere esattamente il look and feel del costruito in barra delle schede. (Pensate Java su OS X).
-
Ogni volta che un utente fa clic su una scheda, si aggiungerà un'altra attività alla pila. Non solo questo è uno spreco di memoria, ma ogni volta che l'utente fa clic sul pulsante Indietro sul telefono, andrà alla scheda precedente. Questo non è il modo in cui si suppone che la barra delle schede di lavoro.