wake-up-neo.net

Textgröße mit unterschiedlicher Auflösung

ich benutze eine Galaxie Registerkarte 1, 7 Zoll HDpi und eine Galaxie Registerkarte plus, 7 Zoll HDpi aber mehr Auflösung, und in meiner Anwendung kann der Text in Galaxien Registerkarte gut gelesen werden, aber in Galaxie Registerkarte Plus sind zu viel klein. Im verwendet sp in Schriftgröße und Layout groß. Irgendeine Idee? Vielen Dank

13
colymore

Dies sollte hilfreich sein, wenn Sie die Größe programmgesteuert einstellen möchten. Der Text wird auf jedem Gerät in der gleichen Größe angezeigt

TextView text = new TextView(this);
text.setText("text");
text.setTextSize(16 * getResources().getDisplayMetrics().density);
33
Dr Glass

Bei den Hardwarespezifikationen handelt es sich beim Galaxy Tab 1 um ein MDPI-Gerät. Da Samsung jedoch Android 2.x verwendet, hat Samsung die HDPI-Ressourcen programmgesteuert eingestellt. So kann ich Ihnen raten, folgendes zu machen:

  1. Erstellen Sie die Datei dimens.xml im Verzeichnis values.
  2. Setzen Sie dort <dimen name="font_size">30sp</dimen>. Dies ist die Standardschriftgröße.
  3. Erstellen Sie die Datei dimens.xml im Verzeichnis values-large.
  4. Setzen Sie dort <dimen name="font_size">20sp</dimen>. Dies ist die Schriftgröße für Registerkarte 1 der Galaxie.
  5. Erstellen Sie die Datei dimens.xml im Verzeichnis values-sw600dp.
  6. Setzen Sie dort <dimen name="font_size">30sp</dimen>. Dies ist die Schriftgröße für andere Tablets mit Android 3.x und neuer.
  7. Geben Sie im Layout Android:textSize="@dimens/font_size" an.
19
vasart

sie müssen nur verschiedene Ordner erstellen, die sich auf Dichte oder Bildschirmgröße beziehen

Option 1.

values-large
values-small
values-normal

Für weitere Erklärungen klicken Sie auf diesen Link ...

Unterstützung für mehrere Bildschirme

Option 2.

mTextView.setTextSize(16 * getResources().getDisplayMetrics().density);

dies ergibt TextSize abhängig von der Dichte.

15
SilentKiller

(1) Ich denke, dass die Verwendung von "dp" oder "dip" für Text besser ist als die Verwendung von "sp", da dp (density pixel) sich an die Bildschirmdichte anpasst. Text wird daher bei Geräten mit hoher Dichte größer und bei Geräten mit geringer Dichte kleiner.

(2) OR Wenn Sie speziell für die Textgröße "sp" verwenden möchten, können Sie die Gerätedichte ermitteln und die Textgröße entsprechend festlegen:

    DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    switch(displayMetrics.densityDpi){ 
        case DisplayMetrics.DENSITY_LOW: 
            //set text-size for low-density devices.
            break; 
        case DisplayMetrics.DENSITY_MEDIUM: 
            //set text-size for medium-density devices.
            break; 
        case DisplayMetrics.DENSITY_HIGH: 
            //set text-size for high-density devices.
            break; 
    } 
4
Yogesh Somani

versuche dies:

so was

Android:textSize= "10sp"

sp

Skalenunabhängige Pixel - Dies ist wie bei der dp-Einheit, aber auch skaliert durch die Einstellung der Schriftgröße des Benutzers. Es wird empfohlen, .__ zu verwenden. Dieses Gerät bei der Angabe von Schriftgrößen, damit sie für .__ angepasst werden. sowohl die Bildschirmdichte als auch die Präferenz des Benutzers.

Mit dem folgenden Code wird die Skalierung der Schriftgröße in einer Textansicht unter Verwendung der Systemschriftgradeinstellung des Benutzers angepasst.

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getRealSize(size);
int screenWidth = size.x;
float fontscale = getResources().getConfiguration().fontScale;
float textSize = (screenWidth/ fontscale)/10;
Log.e(TAG, "textSize is:  " + textSize);
yourTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP,  textSize);
2
Rick

Sie können beliebige this dimensionen, die diesen Markt als verwenden, basierend auf der physischen Größe des Bildschirms verwenden. Dann haben Texte auf allen Geräten die gleiche physische Größe.

2
Jin35
2
bashu

TextView headerTextView (String-Bezeichnung) {

    TextView headerTextView = new TextView(this.context);
    float scale = context.getResources().getDisplayMetrics().density;
    if(scale > 2.0) {
    headerTextView.setWidth(210);
    headerTextView.setHeight(120);
    headerTextView.setTextSize(17);
    }
    else {
        headerTextView.setWidth(125);
        headerTextView.setHeight(60);
        headerTextView.setTextSize(21);
    }
1
yug

Kurz gesagt, Sie können den skalierbaren DP und skalierbaren Font - Ansatz verwenden.

Die Android-Projektstruktur ermöglicht inhärent die Angabe unterschiedlicher Schriftgrößen (SP) und Randwerte (DP), indem sie in dimens.xml-Dateien für unterstützte Bildschirmgrößen definiert werden. Aber das Problem, das immer noch besteht, ist - welche Werte verwendet werden sollen? UX-Designer bieten normalerweise Style-Guides für nur einen Satz (z. B. 360 x 640 DP-Bildschirmgröße) und nicht für alle anderen unterstützten Bildschirmgrößen. Das Problem der Verwendung von richtigen Werten für andere unterstützte Bildschirmgrößen bleibt daher weiterhin unbeantwortet. 

Eine gute Lösung (nach meinem Verständnis) ist die Verwendung von Readymade-skalierbaren Wörterbüchern für dimens.xml-Dateien. Dies ähnelt dem Verzeichnis der von this library bereitgestellten Dateien. Nachdem Sie diese XML-Dateien zum Projekt hinzugefügt haben, müssen Sie nur die Schlüssel in Ihren Layouts verwenden. Dann verwendet Android automatisch den Zeichensatz-/Randwert aus dem entsprechenden Verzeichnis. Bitte beziehen Sie sich auf hier für visuelle Unterschiede - mit und ohne diesen Ansatz.

0
birender

für textSize schlug google vor, 'sp' anstelle von 'dp' .__ zu verwenden.enter image description here

chcek diesen Link http://developer.Android.com/design/style/typography.html

für die Unterstützung der Schriftgröße für mehrere Bildschirme sollten Sie für jede Bildschirmgröße eine neue Ressource erstellen http://developer.Android.com/guide/topics/resources/more-resources.html#Dimension

0
Fahriyal Afif

TextView tv = neue TextView (Kontext); Tv.setText ("Hello World");

// Wert ist ein skaliertes Pixel (SP) Tv.setTextSize (TypedValue.COMPLEX_UNIT_SP, 20f);

// Wert ist geräteunabhängige Pixel (DIP) Tv.setTextSize (TypedValue.COMPLEX_UNIT_DIP, 20f);

// Wert ist Rohpixel (PX) Tv.setTextSize (TypedValue.COMPLEX_UNIT_PX, 20f);

// Wert ist in Punkten (PT) Tv.setTextSize (TypedValue.COMPLEX_UNIT_PT, 20f);

// Wert in Millimetern (MM) Tv.setTextSize (TypedValue.COMPLEX_UNIT_MM, 20f);

// Wert ist in Zoll (IN) Tv.setTextSize (TypedValue.COMPLEX_UNIT_IN, 20f);

0
Darkman