Ho una TextView che visualizza il testo che cambia ed esegue il tempo. Voglio usare il metodo View.getLineCount() per vedere quante linee assume TextView e fare di conseguenza diverse funzioni. Il problema è che ho bisogno di determinare il numero di linee che TextView occupa nello stesso metodo che ha bisogno di sapere quante linee occupa. Ho provato a chiamare View.invalidate() tra le due chiamate ma non sembra che abbia risolto nulla. Vorrei misurare il numero di linee senza rendere la vista se possibile, ma se devo renderlo sarei aperto a farlo anche io. Fammi sapere se questo non è abbastanza specifico e cercherò di essere più specifico. Grazie!Android: Misura la dimensione della vista prima del rendering
risposta
Questo può effettivamente essere un problema molto complesso in Android. Se hai bisogno di sapere quando imposti il testo (cioè prima che la vista sia renderizzata o prossima al rendering), l'unica opzione reale è usare StaticLayout. Se si può aspettare fino a quando nei pressi di tempo di rendering, è possibile utilizzare un viewTreeObserver:
yourTextView.getViewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout(){
yourTextView.getLineCount();
}
}
onGlobalLayout può essere chiamato più volte e, a volte (per qualsiasi motivo) ho trovato che le opinioni non sono effettivamente disposti ancora, quindi dovresti fare un po 'di registrazione e vedere se riesci a trovare un modo per assicurarti che qualunque risultato tu abbia effettivamente ha senso (cioè un conteggio delle righe> 0).
StaticLayouts è un'alternativa più complessa che dovrebbe essere in grado di fornire le dimensioni della visualizzazione e il numero di linee. Possono richiedere qualche ritocco per andare al lavoro correttamente, e assicurarsi di utilizzare la vernice dal punto di vista si sta cercando di misurare:
yourTextView.setText(newText);
//the last boolean should be true if you're using padding on your view
StaticLayout measure = new StaticLayout(yourTextView.getText(), yourTextView.getPaint(),
maxAvailableWidthForYourTextView, Layout.Alignment.ALIGN_NORMAL, 1.0f, 1.0f, false)
int numberOfLines = measure.getLineCount();
Se siete disposti a (o hanno già) sottoclasse TextView, è può sovrascrivere onSizeChanged o onMeasure e provare a ottenere il numero di linee lì. Di nuovo, come con l'osservatore dell'albero delle viste, a volte possono essere chiamati prima che la vista sia stata effettivamente misurata, quindi potrebbe essere necessario verificare che qualsiasi valore ottenuto in questi metodi abbia senso.
- 1. Determinare la dimensione della finestra WPF SizeToContent prima del rendering
- 2. Come si misura la dimensione di un TextBlock in WPF prima del rendering?
- 3. Come impostare la dimensione della vista utente personalizzata
- 4. Android: acquisizione della dimensione del file dell'immagine prima della condivisione (Intent.ACTION_SEND)
- 5. Come modificare il contenuto prima del rendering in Android WebView?
- 6. Chiarimento su cosa esattamente la dimensione dei caratteri CSS misura
- 7. Come determinare la dimensione di una vista Android in pixel?
- 8. Imposta la dimensione della vista nel file NIB/XIB
- 9. bxslider che calcola la dimensione della vista errata sul carico
- 10. Asp.Net Controllare la dimensione del file prima del caricamento
- 11. Come caricare la dimensione del file prima del caricamento
- 12. Adaptive UIPresentationController basato sulla dimensione della vista
- 13. La dimensione del font influisce sul rendering delle legature?
- 14. Android: misura l'altezza del testo su una tela
- 15. Android ridurre la dimensione del Immagine fotocamera
- 16. ios 8 modifica la dimensione del controller vista/modal view
- 17. backbone.js visualizza i rendering prima del recupero del modello
- 18. non prenderà la dimensione completa della vista tabella in javaFX
- 19. Come si misura la dimensione totale delle variabili globali?
- 20. Perché escape_javascript prima del rendering parziale?
- 21. Determinare la dimensione del viewstate della pagina ASP.NET prima di servire la pagina
- 22. dimensione della matrice e la dimensione del puntatore carattere carattere
- 23. Android: Come cambiare la dimensione del RadioButton
- 24. Recupero della proprietà del nome della vista in Android?
- 25. Dimensione ottimale del buffer Android
- 26. UICollectionVisualizzazione del layout di Vista - La dimensione dell'articolo non cambia
- 27. Come ottenere la dimensione esatta della directory della cache: android
- 28. Android Studio - rendering del problema della libreria di supporto
- 29. Come verificare la dimensione del file prima dell'apertura in R
- 30. Controllo dimensione download prima del download