2013-03-30 22 views
23

Zamierzam użyć innego rozmiaru czcionki dla widoku tekstowego na różnym rozmiarze urządzenia, aby litery były czytelne. Zdecydowałem się już nie używać różnych układów dla różnych urządzeń i zbudowałem wspólny układ, aby pasował do wszystkich urządzeń. Teraz jedynym problemem jest rozmiar tekstu.Zwiększ rozmiar czcionki w zależności od wielkości urządzenia.

Pytania:

  1. Chciałbym mieć swoje propozycje techniczne dotyczące sposobu zmiany rozmiaru czcionki na podstawie rozmiaru (wielkości fizycznej) urządzenia.

  2. Sposób wyznaczania rozmiaru czcionki w oparciu o współczynnik proporcji.

  3. Jakieś ułomności w stosowaniu tego rodzaju podejścia?

XML dla widoku tekstowego

<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> 

góry dzięki

Odpowiedz

0

Android ma wbudowane wyposażenie dla this- dp i SP. dp to piksele urządzenia. Zasadniczo jest to 1dp = 1/160th of inch. Pozwala to określić wysokość czcionki w rzeczywistym rozmiarze. Sp to skalowane piksele. Ten rozmiar jest skalowany na podstawie domyślnego rozmiaru czcionki, więc użytkownik może skalować jego czcionkę systemową, a aplikacja dopasuje ją. Poręczny dla osób z problemami z widzeniem, które potrzebują dużego tekstu, a nie zajmują się ekranem nieruchomości dla innych.

Powinieneś prawdopodobnie używać jednego lub drugiego z nich.

+0

picpaste.com/Untitled1-4MSIpnIo.png Proszę sprawdzić zrzut ekranu Użyłem 15dp dla TextView. Ale jest to pokazane w różnej liczbie linii na różnych urządzeniach. Muszę mieć wszystkie ekrany z taką samą liczbą linii. Jeśli rozmiar ekranu jest mały, czcionka musi być mała, a jeśli rozmiar ekranu jest duży, to czcionka musi być duża. Przekaż swoje sugestie - iappmaker – iappmaker

+1

dp (lub dip) to niezależne od urządzenia piksele, a nie "piksele urządzenia" . Zobacz http://developer.android.com/guide/topics/resources/more-resources.html#Dimension Reszta twojego posta około 160 punktów na cal i wszystko inne jest w większości poprawne. Po prostu jestem pedantyczny. –

23

Tak, to podejście jest wadliwe. Urządzenia z Androidem mają różne rozmiary, ale mogą też mieć bardzo różne gęstości.

enter image description here

Trzeba tylko być następujące Android projekt best practices.

enter image description here

Są rzeczywiście bardzo dobrze przemyślane. Dlaczego chcesz odkryć nowe koło?

+0

http://picpaste.com/Untitled1-4MSIpnIo.png Proszę sprawdzić zrzut ekranu Użyłem 15dp dla textview. Ale jest to pokazane w różnej liczbie linii na różnych urządzeniach. Muszę mieć wszystkie ekrany z taką samą liczbą linii. Jeśli rozmiar ekranu jest mały, czcionka musi być mała, a jeśli rozmiar ekranu jest duży, to czcionka musi być duża. Prześlij swoje sugestie: – iappmaker

+0

patrz http://developer.android.com/training/multiscreen/screendensities.html "Dp" to niezależny od gęstości piksel, który odpowiada fizycznemu rozmiarowi piksela przy 160 dpi. 'Sp' jest tą samą jednostką podstawową, ale jest skalowany przez preferowany rozmiar tekstu użytkownika (jest to piksel niezależny od skali), więc powinieneś używać tej jednostki miary podczas definiowania rozmiaru tekstu (ale nigdy dla rozmiarów układu). – CrandellWS

14

Spróbuj tego, dodaj ten atrybut do swojego xml. Dostosuje textize w oparciu o screenize spróbuj.

style="@android:style/TextAppearance.DeviceDefault.Medium" 
+9

Jest to dostępne z API 14 .. Używam min API 8 – iappmaker

6

W przypadku rozmiarów czcionek należy używać pikseli w pikselach (sp). Android dostosuje rozmiar czcionki odpowiednio do gęstości urządzenia. Powyższe posty mają lepsze wyjaśnienie i uzasadnienie.

+5

I zmieniono na sp. ale wciąż ten sam problem. w zasadzie muszę zrobić ten widok tekstowy, aby zająć ten sam% ekranu na wszystkich urządzeniach i wypełnić go tekstem – iappmaker

+0

czy programujesz czcionkę programistycznie lub z xml? – bostan

+0

w xml jak pokazałem w pytaniu – 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); 

Na podstawie zmiany rozmiaru ekranu 5f na dowolne.

http://developer.android.com/guide/practices/screens_support.html. Sprawdź temat w sekcji Najlepsze praktyki.

+0

jak to się różni od tv.setTextSize (rozmiar) – iappmaker

+0

ustawiasz textize dla określonego słowa w widoku tekstowym. Jeśli nie potrzebujesz całego tekstu w widoku tekstowym o tym samym rozmiarze czcionki, możesz go użyć. Jeśli znasz dwa słowa "cześć świat", możesz zwiększyć rozmiar czcionki "cześć", zachowując rozmiar tego samego słowa. – Raghunandan

+1

Jak wartość, którą wykonuje konstruktor RelativeSizeSpan (5f) do sp? ile sp będzie? lub jak mogę to obliczyć? –

0

w tym wydaniu używam następującej biblioteki w wielu projektach i uważam, że jest to fantastyczne. Nie musisz się martwić o ekrany. Ale znowu musisz utworzyć oddzielne układy dla kart.

https://github.com/intuit/sdp

+0

To jest bardziej odpowiedni komentarz. – BlackBeard

Powiązane problemy