2010-06-08 9 views
16

Sto cercando un modo semplice per l'utente di vedere quante bevande hanno avuto per un calcolatore BAC.Come si crea un ImageView in codice java, all'interno di un layout esistente?

Immagine dell'app:

PICTURE OF THE APP

On premere il pulsante, vorrei un'immagine da aggiungere alla schermata, direttamente sotto il filatore e con l'allineamento a sinistra. Quando premo di nuovo il pulsante, voglio aggiungere un'altra immagine allo schermo.

Quindi, se premevo il pulsante Aggiungi birra, un disegnabile di una birra apparirebbe sotto lo spinner. Se premo di nuovo il pulsante Aggiungi birra, voglio che ci siano DUE drawable di birre sotto lo spinner, preferibilmente con l'aggiunta di quelli da destra.

(Inoltre, avendo a raggiungere il loro limite larghezza, avvolgono, e ricominciare a sinistra, ma al di sotto di una linea completa, sarebbe impressionante)

non riesco a capire come fare questo. Presumo che aggiungere un ImageView in codice a un layout relativo (perché deve essere posizionato a destra) sarebbe il percorso migliore, ma se è possibile in xml sarei più che felice di usarlo. Qualsiasi aiuto?

risposta

39

Nel richiamo del clic del pulsante, creare un oggetto ImageView, impostare l'immagine della bottiglia e posizionarla. Per esempio (sto assumendo i nomi dei vostri elementi):

ImageView iv = new ImageView(this); 
iv.setImageResource(R.drawable.beerbottle); 
RelativeLayout rl = (RelativeLayout) findViewById(R.id.RelativeLayout01); 
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT, 
    RelativeLayout.LayoutParams.WRAP_CONTENT); 
lp.addRule(RelativeLayout.BELOW, R.id.ButtonRecalculate); 
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
rl.addView(iv, lp); 

non ho ancora testato questo, si badi bene, ma dovrebbe dare un buon inizio. Probabilmente dovrai aggiungere altri parametri a ImageView e possibilmente a LayoutParams per renderlo bello, oltre a tenere traccia del numero di bottiglie visualizzate, ecc.

+0

Ah! Quasi! Solo la riga superiore "ImageView iv = new ImageView (this);" genera un'eccezione "Il costruttore ImageView() non è definito." –

+0

Posso sostituire "questo" con "null" e funziona, ma l'immagine non viene visualizzata ... –

+0

Ah sì, è nella callback quindi manca il contesto appropriato. Sostituisci "this" con "ParentActivity.this", dove ParentActivity è la classe Activity in cui stai impostando il listener. –

Problemi correlati