Inserisco un modulo di chat in gioco in un'app. Sto aggiungendo messaggi di testo non appena vengono ricevuti in una vista LinearLayout. Voglio impostare i parametri di layout su TextView, ma il codice seguente si blocca e i messaggi di errore mi infastidiscono.android - impostazione LayoutParams al livello di programmazione
private void addChat(String chat, String when, Boolean mine) {
int leftMargin;
TextView tv = new TextView(this);
llview.addView(tv);
tv.setTextColor(Color.WHITE);
tv.setTextSize(2,25);
tv.setText(chat);
if (mine) {
leftMargin = 5;
tv.setBackgroundColor(0x7C5B77);
}
else {
leftMargin = 50;
tv.setBackgroundColor(0x778F6E);
}
final ViewGroup.MarginLayoutParams lpt =(MarginLayoutParams)tv.getLayoutParams();
lpt.setMargins(leftMargin,lpt.topMargin,lpt.rightMargin,lpt.bottomMargin);
tv.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
}
quando viene eseguito, tutto il codice sopra esegue ma si blocca in runtime Android come:
03-13 14:15:38.513: E/AndroidRuntime(12985): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams
e passando attraverso il debugger, elabora effettivamente tutte queste linee
ma poi barfs quando si tenta di eseguire il rendering con un messaggio dettagliato eccezionalmente criptico:
android.view.ViewGroup$LayoutParams
Quindi, cosa hanno fatto per arrivare a questo stato? Cosa dovrei fare per avere messaggi alternati a sinistra/destra?
Come impostareLayoutParams nei valori 'dp' anziché' wrap_content' o 'match_parent'. Voglio impostarlo a '100dp' ciascuno. –
Ho esattamente la stessa domanda e non riesco a trovare la soluzione. – Prabhakar