2014-06-17 8 views
6

Ho una tabella con 3 righe di numeri (informazioni di riepilogo). Quando le TextView sono in stile con la gravità predefinita, il testo viene visualizzato correttamente.TextView che mostra un solo carattere quando viene applicato lo stile gravità

enter image description here

Ma quando sono in stile con <item name="android:gravity">right</item>, ogni TextView mostra solo il primo carattere di quello che dovrebbe.

enter image description here

questo include anche le intestazioni delle colonne - non indicati qui - che non sto nemmeno cambiando.

Vorrei che i valori della tabella fossero allineati a destra per essere coerenti con il resto dell'app e sono perplesso sul motivo per cui i valori nella tabella si comporterebbero in questo modo.

Qui è il mio stile (per quando non funziona):

<style name="summary_values"> 
    <item name="android:textSize">@dimen/font_size</item> 
    <item name="android:textStyle">bold</item> 
    <item name="android:textColor">@color/background</item> 
    <item name="android:gravity">right</item> 
</style> 

Ecco l'XML per una delle celle (sono tutti fondamentalmente la stessa)

<TextView 
    android:id="@+id/value1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="@integer/table_weight_percent_value" 
    style="@style/summary_values"/> 

Edit

Il troncamento si verifica anche quando gravity è impostato su left o center.

Edit 2

Ho rimosso la linea <item name="android:gravity">right</item> dallo stile del tutto ed è ancora troncare a volte, a seconda dei valori. Ho passato il mio codice e i valori nel codice sono corretti.

Edit 3

Dopo aver rimosso tutto lo stile, tranne il colore del carattere, il troncamento avviene ancora, ma non ho capito quando. Se cambio i numeri nella tabella di input, i valori di riepilogo a volte vengono troncati e talvolta no.

Ecco una riga dal tavolo. Tutte le righe sono simili, a parte le modifiche all'ID.

<TableRow 
    android:padding="@dimen/pad_12"> 
    <TextView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="@integer/table_weight_percent_label" 
     android:text="@string/cho" 
     style="@style/label_light"/> 
    <TextView 
     android:id="@+id/percent_1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="@integer/table_weight_percent_value" 
     style="@style/summary_values"/> 
    <TextView 
     android:id="@+id/val1a" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="@integer/table_weight_percent_value" 
     style="@style/summary_values"/> 
    <TextView 
     android:id="@+id/val1b" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="@integer/table_weight_percent_value" 
     style="@style/summary_values"/> 
</TableRow> 

Edit 4

Dopo aver provato un certo numero di cose, ho cambiato il contenente TableView ad un LinearLayout con orientamento orizzontale. Ho persino lasciato le viste TableRow così com'erano (aggiungendo semplicemente layout_width e layout_height). Sorprendentemente, ora funziona.

Per descrivere il comportamento dispari un po 'di più: quando stava visualizzando solo il primo carattere, se avessi aperto la tastiera virtuale e l'avessi chiusa di nuovo, la tabella sarebbe stata visualizzata correttamente, finché non ho modificato uno dei valori di EditText. Si è comunque comportato in modo strano anche quando ho rimosso 2 delle colonne dal tavolo, quindi c'era molto spazio per le viste.

+0

Lo fa con qualsiasi valore impostato su "android: gravità"? Come, tronca con 'left' o' center'? –

+0

@AndrewSchuster: appena provato e sì, troncato con 'left' e' center'. –

+0

Quando si esegue il dump della gerarchia delle viste, le viste del testo sono nella posizione corretta e con una dimensione errata o nella posizione errata con la dimensione corretta? – matiash

risposta

1

Dopo aver provato un numero di cose, ho modificato il TableView che contiene un LinearLayout con orientamento orizzontale.Ho persino lasciato le visualizzazioni di TableRow come erano (aggiungendo semplicemente layout_width e layout_height). Sorprendentemente, ora funziona.

Non ho idea del motivo per cui non ha funzionato o perché funziona ora. Sarei davvero grato se qualcuno potesse dare qualche idea in merito.

Problemi correlati