Autore Topic: Parametro Weight tramite Codice Java  (Letto 457 volte)

Offline AleoxFalco

  • Nuovo arrivato
  • *
  • Post: 27
  • Poi ci penso
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    APC 87-50
  • Sistema operativo:
    Windows 7
Parametro Weight tramite Codice Java
« il: 17 Gennaio 2013, 17:42:15 CET »
0
Salve a tutti.
Approfitto con questo topic per presentarmi, in quanto ho usufruito molto di questo forum come lettore per tutta questa settimana.
Mi chiamo Alessandro, 24 anni, programmatore vario. Ho iniziato a programmare su Android da poco più di una settimana, tra manuali, guide e il forum il mio studio procede bene e la mia applicazione prende forma man mano che passa il tempo.

Ora però mi sono arenato di fronte ad un problema che (ahime niubbagine) sembra non essere trattato da nessuna parte.

Il mio obiettivo era inserire a cascata in un LinearLayout Verticale una seria di bottoni, ognuno occupando tot larghezza ma che insieme occupano tutta l'altezza della schermo. Ho modificato il Layout in XML in modo adeguato e il risultato è più che ottimo.

Ora però sembra che il numero di pulsanti non sia predefinito ma variabile a secondo di un parametro esterno. Non posso sfruttare l'XML essendo statico e mi serve un metodo più dinamico.

Ho pensato di generare i pulsanti direttamente nell'Activity in questione, con un banale ciclo for e una chiamata add. posto il codice

Codice: [Seleziona]
for(int i=0;i<8;i+=1){
                    Button b = new Button(this);
                    b.setId(i);
                    b.setText("filtro "+String.valueOf(i));
                    b.setHeight(LayoutParams.WRAP_CONTENT);
                    b.setWidth(LayoutParams.MATCH_PARENT);
                    layout.addView(b);
                    b.setOnClickListener(gestore);
            }

Il tutto funziona, listener compreso. IL problema però è che i pulsanti non acquistano un altezza tale da occupare tutti insieme l'altezza massima consentita ma hanno altezza propria, infatti metà dei bottoni nemmeno vengono visualizzati.

La differenza tra il codice XML e questo postato è solo una ovvero il parametro Weight, settato nel XML a 1. Non lo trovo.

Spero che qualcuno mi aiuti a risolvere questo demente ma insidioso problema

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Parametro Weight tramite Codice Java
« Risposta #1 il: 17 Gennaio 2013, 18:20:26 CET »
0
Se il numero massimo di bottoni è ragionevole (e dovrebbe esserlo in una applicazione normale), mettili tutti nell'XML statico, e da codice abiliti o meno la presenza (attenzione, ci sono due flag, uno rende invisibile ma occupa sempr elo spazio, l'altro lo esclude proprio dal layout) a seconda dei parametri. Il layout si riadatta da solo (almeno così fa nel caso diverso, ma concettualmente simile, che ho nella mia app).
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline AleoxFalco

  • Nuovo arrivato
  • *
  • Post: 27
  • Poi ci penso
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    APC 87-50
  • Sistema operativo:
    Windows 7
Re:Parametro Weight tramite Codice Java
« Risposta #2 il: 17 Gennaio 2013, 20:34:16 CET »
0
grazie per la risposta.

purtroppo il numero non è ragionevole.... prevedo da un minimo di 2 ad un massimo di 12 bottoni... Ovviamente posso fare come dici tu ma per come è strutturato il codice ora preferirei una cosa dinamica.... troppi controlli da copiare non mi piace.

ovviamente se è l'unica soluzione possibile la implementerò senza esitare.... ma fino a quel punto preferisco una cosa più "elegante".

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Parametro Weight tramite Codice Java
« Risposta #3 il: 17 Gennaio 2013, 21:05:13 CET »
0
Puoi impostare il layout weight in questo modo:
Codice (Java): [Seleziona]
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1f);
for(int i=0;i<8;i+=1){
    Button b = new Button(this);
    b.setId(i);
    b.setText("filtro "+String.valueOf(i));
    layout.addView(b, params);
    b.setOnClickListener(gestore);
}

Il weight è quell'1f ;)

Offline AleoxFalco

  • Nuovo arrivato
  • *
  • Post: 27
  • Poi ci penso
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    APC 87-50
  • Sistema operativo:
    Windows 7
Re:Parametro Weight tramite Codice Java
« Risposta #4 il: 17 Gennaio 2013, 21:13:17 CET »
0
grandissimo!!!

domani mattina sarà la prima cosa che farò... spero sia proprio quello l'errore altrimenti non saprei dove sbattere la testa ^^

Offline AleoxFalco

  • Nuovo arrivato
  • *
  • Post: 27
  • Poi ci penso
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    APC 87-50
  • Sistema operativo:
    Windows 7
Re:Parametro Weight tramite Codice Java
« Risposta #5 il: 18 Gennaio 2013, 08:39:37 CET »
0
grazie... funziona tutto alla perfezione :D