2010-11-10 13 views
11

Qualcuno ha provato a scrivere la propria implementazione di ViewGroup con alcune TextViews in esso?TextView gravità

Ho un problema, che TextViews in tale implementazione non rispetta la proprietà gravità TextView.setGravity(Gravity.CENTER) e il testo è posizionato nell'angolo in alto a sinistra.

Qualcuno può aiutarmi a scoprire perché?

EDIT:

Ok. non importa, l'ho capito da solo già.

Se enyone è interessato, io metodo appena sovrascritto onMeasure() (per tutti i miei TextViews) e cambiato chiamata super.onMeasure()-setMeasuredDimension(int, int) e la gravità ha iniziato a funzionare normalmente.

In sostanza, nel mio layout personalizzato Io uso la seguente classe per visualizzare il testo:

private static class GravityTextView extends TextView { 

    public GravityTextView(Context context) { 
     super(context); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     setMeasuredDimension(widthMeasureSpec, heightMeasureSpec); 
    } 

} 
+0

Cool, grazie per la condivisione! –

+0

Grazie per aver condiviso! Una nota, ho dovuto chiamare la misura da onLayout anche su TextViews. Quindi, sovrascrivendo la misura come sopra e chiamando misura. –

+0

prova a impostare la gravità del layout lineare/relativo –

risposta

3

Questo non è il comportamento sbagliato si sta solo cercando di impostare la proprietà sbagliata.

Con TextView.setGravity(Gravity.CENTER) si imposta la gravità del contenuto di TextView.

Quello che stai cercando è il layout_gravity.

+0

Questo è esattamente ciò che sto cercando di fare. Se, ad esempio, il mio TextView si trova in qualche posizione casuale nel mio layout personalizzato e occupa 200px di spazio e il testo al suo interno solo 50px, voglio che il testo sia allineato al centro di tale TextView (quindi TextView sarà mantengono lo spazio di 200 px, ma il testo si troverà al centro di esso, rendendolo 75px marging tra i bordi TextView e il testo effettivo). –

Problemi correlati