2013-03-30 17 views
23

Ho pianificato di utilizzare diverse dimensioni del carattere per la visualizzazione del testo su diverse dimensioni del dispositivo in modo da rendere leggibili le lettere. Ho già deciso di non utilizzare layout diversi per dispositivi diversi e di creare un layout comune per adattarlo a tutti i dispositivi. Ora l'unico problema è nelle dimensioni del testo.Aumentare la dimensione del carattere in base alle dimensioni del dispositivo

Domande:

  1. Mi piacerebbe avere i vostri suggerimenti tecnici su come modificare la dimensione del carattere in base alla dimensione (la dimensione fisica) del dispositivo.

  2. Come derivare la dimensione del carattere in base al rapporto aspetto.

  3. Eventuali difetti nell'utilizzo di questo tipo di approccio?

XML per la visualizzazione di testo

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#ffffff" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/tvValue4" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="I planned to use different font size for the textview on different device size so as to make the letters legible. I have already decided not to use different layouts for different devices and built a common layout to fit in all the devices. Now the only problem is on the text size." 
     android:textColor="#000000" 
     android:textSize="15sp" /> 

</LinearLayout> 

Grazie in anticipo

risposta

0

Android è costruito in strutture per questo- dp e sp. dp è pixel del dispositivo. Fondamentalmente è 1dp = 1/160th di un pollice. Questo ti permette di specificare l'altezza del font nella dimensione del mondo reale. Sp è pixel ridimensionati. Questa dimensione si ridimensiona in base alla dimensione predefinita del carattere, quindi un utente può ridimensionare il suo carattere di sistema e la tua app lo abbinerà. Pratico per le persone con problemi alla vista che hanno bisogno di un testo grande, mentre non prendono in considerazione lo schermo per gli altri.

Probabilmente dovresti usare uno o l'altro di questi.

+0

picpaste.com/Untitled1-4MSIpnIo.png Si prega di controllare la schermata ho usato il 15dp per il TextView. Ma questo è mostrato in un numero diverso di linee in diversi dispositivi. Ho bisogno di avere tutti gli schermi con lo stesso numero di linee. Se la dimensione dello schermo è piccola, il carattere deve essere piccolo e Se la dimensione dello schermo è grande allora il carattere deve diventare grande .. Passa i tuoi suggerimenti - iappmaker – iappmaker

+1

dp (o dip) è Pixel indipendente dal dispositivo, non "pixel del dispositivo" . Vedi http://developer.android.com/guide/topics/resources/more-resources.html#Dimension il resto del post circa 160 punti per pollice e tutto il resto è per lo più corretto. Sono solo pedante. –

23

Sì, questo approccio è difettoso. I dispositivi Android hanno dimensioni diverse, ma possono anche avere densità molto diverse.

enter image description here

Si dovrebbe solo essere seguito il design di Android best practices.

enter image description here

Sono in realtà molto ben pensato. Perché vorresti reinventare la ruota?

+0

http://picpaste.com/Untitled1-4MSIpnIo.png Si prega di controllare la schermata Ho usato il 15dp per la visualizzazione di testo. Ma questo è mostrato in un numero diverso di linee in diversi dispositivi. Ho bisogno di avere tutti gli schermi con lo stesso numero di linee. Se la dimensione dello schermo è piccola, il carattere deve essere piccolo e Se la dimensione dello schermo è grande allora il carattere deve diventare grande .. Si prega di passare i vostri suggerimenti – iappmaker

+0

vedere http://developer.android.com/training/multiscreen/screendensities.html Un 'dp' è un pixel indipendente dalla densità che corrisponde alla dimensione fisica di un pixel a 160 dpi. Un 'sp' è la stessa unità di base, ma è ridimensionato dalla dimensione del testo preferita dall'utente (è un pixel indipendente dalla scala), quindi dovresti usare questa unità di misura quando definisci le dimensioni del testo (ma mai per le dimensioni del layout). – CrandellWS

14

Prova questo, aggiungi questo attributo nel tuo xml. Regolerà il testo in base a screensize provalo.

+9

Questo è disponibile dall'API 14 .. Sto usando l'API minima 8 – iappmaker

6

Per le dimensioni dei caratteri utilizzare i pixel di scala (sp). Android ridimensiona la dimensione del carattere in base alla densità del dispositivo. I post precedenti hanno una spiegazione migliore e il ragionamento.

+5

Ho cambiato in sp. ma ancora lo stesso problema. fondamentalmente ho bisogno di fare questa vista testuale per occupare la stessa% dello schermo in tutti i dispositivi e riempirla con il testo – iappmaker

+0

stai impostando i fontsize a livello di programmazione o da xml? – bostan

+0

nell'xml come ho mostrato nella domanda – iappmaker

1
String s= "hello"; 
    TextView tv= (TextView) findViewById(R.id.tv); 
    Spannable span = new SpannableString(s); 
    span.setSpan(new RelativeSizeSpan(5f), 0, span.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    tv.setText(span); 

In base alle dimensioni dello schermo, modificare 5f in base a ciò che si desidera.

http://developer.android.com/guide/practices/screens_support.html. Controllare l'argomento nella sezione Best practice.

+0

come questo è diverso da tv.setTextSize (dimensione) – iappmaker

+0

si imposta il testo per una parola particolare in textview. Se non si richiede l'intero testo in textview della stessa dimensione del carattere, è possibile utilizzare questo. Se fai 2 parole ciao mondo, puoi aumentare la dimensione del carattere di Ciao mantenendo le dimensioni della parola lo stesso. – Raghunandan

+1

come il valore che il costruttore RelativeSizeSpan accetta (5f) traduce in sp? quanti sp sarà? o come posso calcolarlo? –

0

per questo problema Sto utilizzando la seguente libreria in tanti progetti e credo che questo sia fantastico. Non c'è bisogno di preoccuparsi per gli schermi. Ma ancora una volta è necessario creare layout separati per le schede.

https://github.com/intuit/sdp

+0

Questo è più adatto come commento. – BlackBeard

Problemi correlati