webentwicklung-frage-antwort-db.com.de

Textgröße und verschiedene Android-Bildschirmgrößen

Ich weiß, es wurde bereits 1000 Mal diskutiert, aber ich kann die Textgröße nicht für verschiedene Bildschirmgrößen anpassen. Ich versuche, "sp" als Größeneinheiten in meinem benutzerdefinierten Stil zu verwenden:

<style name="CustumButtonStyle" parent="@Android:style/Widget.Button">
    ...
    <item name="Android:textSize">30sp</item>
    ...
</style>

In 2.7 QVGA sieht es ok aus:

2.7QVGA 30sp

Aber in 7in WSVGA sieht das so aus:

7in WSVGA 30sp

Ich habe versucht, 'sp' und 'dp' mit dem gleichen Ergebnis zu verwenden.

Könnten Sie bitte erläutern, wie diese Schaltflächen auf jedem Bildschirm gleich aussehen?

Der vollständige benutzerdefinierte Schaltflächenstil

<style name="CustumButtonStyle" parent="@Android:style/Widget.Button">
    <item name="Android:background">@drawable/custom_button</item>
    <item name="Android:layout_width">fill_parent</item>
    <item name="Android:layout_height">wrap_content</item>
    <item name="Android:layout_margin">3dp</item>
    <item name="Android:textColor">#ffffff</item>
    <item name="Android:gravity">center</item>
    <item name="Android:textSize">30sp</item>
    <item name="Android:textStyle">bold</item>
    <item name="Android:shadowColor">#000000</item>
    <item name="Android:shadowDx">1</item>
    <item name="Android:shadowDy">1</item>
    <item name="Android:shadowRadius">2</item>
</style>

Und in meinem Anwendungsthema habe ich

<item name="Android:buttonStyle">@style/CustumButtonStyle</item>

Und da ist mein Layout:

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/RelativeLayout1"
Android:layout_width="fill_parent"
Android:background="@drawable/grid"
Android:gravity="center"
Android:orientation="vertical" Android:layout_height="fill_parent">

<Button
    Android:id="@+id/buttonContinue"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_alignParentTop="true"
    Android:layout_centerHorizontal="true"
    Android:layout_gravity="center"
    Android:gravity="center"
    Android:text="@string/continue_game" Android:layout_marginTop="3dp" Android:layout_marginBottom="3dp"/>



<Button
    Android:id="@+id/buttonNewGame"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_alignLeft="@+id/buttonContinue"
    Android:layout_alignRight="@+id/buttonContinue"
    Android:layout_below="@+id/buttonContinue"
    Android:layout_gravity="center"
    Android:gravity="center"
    Android:text="@string/new_game" Android:layout_marginTop="3dp" Android:layout_marginBottom="3dp"/>



<Button
    Android:id="@+id/ButtonAbout"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_alignLeft="@+id/buttonNewGame"
    Android:layout_alignRight="@+id/buttonNewGame"
    Android:layout_below="@+id/buttonNewGame"
    Android:layout_gravity="center"
    Android:gravity="center"
    Android:text="@string/about" Android:layout_marginTop="3dp" Android:layout_marginBottom="3dp"/>

102
forcelain

@forcelain Ich denke, Sie müssen dies überprüfen Google IO Pdf for Design . In diesem PDF finden Sie auf Seite Nr. 77, in der Sie die Verwendung von dimens.xml für verschiedene Android-Geräte finden. Siehe unter Struktur unten:

res/values/dimens.xml

res/values-small/dimens.xml

res/values-normal/dimens.xml

res/values-large/dimens.xml

res/values-xlarge/dimens.xml

für Beispiel haben Sie unten dimens.xml in Werten verwendet.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <dimen name="text_size">18sp</dimen>
</resources>

Im Ordner für andere Werte müssen Sie die Werte für Ihre Textgröße ändern.

Anmerkung: Wie von @espinchi angezeigt, wurden die kleinen, normalen, großen und großen Werte seit Android 3.2 zu Gunsten der folgenden Kriterien nicht mehr unterstützt:

Tablet-Layouts für Android 3.2 deklarieren

Für die erste Generation von Tablets mit Android 3.0 wird der richtige Eine Möglichkeit, Tablettlayouts zu deklarieren, bestand darin, sie in ein Verzeichnis mit der .__ zu legen. xlarge Konfigurationsqualifizierer (z. B. res/layout-xlarge /). Im Um andere Tablettypen und Bildschirmgrößen aufnehmen zu können - in insbesondere 7-Zoll-Tablets - Android 3.2 bietet eine neue Möglichkeit zur Festlegung von -Ressourcen für diskretere Bildschirmgrößen. Die neue Technik basiert auf dem Platzbedarf, den Ihr Layout benötigt (z. B. 600dp Breite) anstatt zu versuchen, Ihr Layout an die allgemeinen Größengruppen anzupassen (z. B. large oder xlarge).

Der Grund für das Design von 7 "-Tablets ist bei der Verwendung der Verallgemeinerten Größengruppe schwierig, weil ein 7" -Tablet technisch gesehen im selben Gruppe als 5-Zoll-Handset (große Gruppe). Während diese beiden Geräte in der Größe scheinbar nahe beieinander liegen, unterscheidet sich der Platz für die Benutzeroberfläche einer .__-Anwendung erheblich, ebenso wie der Benutzerstil Interaktion. Daher sollte ein 7 "- und 5" -Bildschirm nicht immer dasselbe Layout verwenden. Damit Sie unterschiedliche Layouts für dieser beiden Arten von Bildschirmen erstellen können, können Sie in Android jetzt festlegen Ihre -Layoutressourcen basieren auf der Breite und/oder Höhe, die tatsächlich__ für das Layout Ihrer Anwendung verfügbar ist, angegeben in dp-Einheiten.

Nachdem Sie beispielsweise das Layout erstellt haben, das Sie für .__ verwenden möchten. Geräte im Tablet-Stil können Sie feststellen, dass das Layout gestoppt wird funktioniert gut, wenn der Bildschirm weniger als 600dp breit ist. Diese Schwelle Damit wird die minimale Größe, die Sie für Ihr Tablet-Layout benötigen . Als solches können Sie jetzt angeben, dass diese Layoutressourcen .__ sein sollen. Wird nur verwendet, wenn für Ihren .__ eine Breite von mindestens 600dp verfügbar ist. Benutzeroberfläche der Anwendung.

Sie sollten entweder eine Breite auswählen und als Mindestgröße ".__" definieren. oder testen Sie die kleinste Breite, die Ihr Layout unterstützt, sobald es .__ ist. Komplett.

Hinweis: Denken Sie daran, dass alle mit diesen neuen APIs für Größen verwendeten Zahlen .__ sind. dichteunabhängige Pixelwerte (dp) und Ihre Layoutabmessungen sollte auch immer mit dp-einheiten definiert werden, denn worauf es Ihnen ankommt about ist der nach dem System verfügbare Bildschirmbereich berücksichtigt die Bildschirmdichte (im Gegensatz zur Verwendung der Auflösung des Rohpixels ). Weitere Informationen zu dichteunabhängigen Pixeln finden Sie unter Lesen Sie die Begriffe und Konzepte weiter oben in diesem Dokument. Verwenden der neuen Größe Qualifikanten

Die verschiedenen Ressourcenkonfigurationen, die Sie basierend auf .__ angeben können. Der für Ihr Layout verfügbare Platz ist in Tabelle 2 zusammengefasst. Diese Neue Qualifier bieten Ihnen mehr Kontrolle über die jeweiligen Bildschirmgrößen Ihre Anwendung unterstützt im Vergleich zur herkömmlichen Bildschirmgröße Gruppen (klein, normal, groß und xlarge).

Hinweis: Die Größen, die Sie mit diesen Qualifikationsmerkmalen angeben, sind nicht die tatsächliche Bildschirmgröße. Die Größen beziehen sich eher auf die Breite oder Höhe in dp-Einheiten, die für das Fenster Ihrer Aktivität verfügbar sind. Das Android Das System verwendet möglicherweise einen Teil des Bildschirms für die Systembenutzeroberfläche (z. B. die Systemleiste am unteren Bildschirmrand oder die Statusleiste am oberen Rand), daher einige Der Bildschirm ist möglicherweise nicht für Ihr Layout verfügbar. Somit sind die Größen Sie geben an, dass es sich speziell um die von Ihrem .__ benötigten Größen handeln soll. Aktivität: Das System berücksichtigt jeden von der Systembenutzeroberfläche verwendeten Platz, wenn Festlegen, wie viel Platz für Ihr Layout zur Verfügung steht. Passen Sie auch auf, dass Die Aktionsleiste wird als Teil des Anwendungsfensters betrachtet Platz, obwohl Ihr Layout es nicht deklariert, so dass .__ reduziert wird. Platz für Ihr Layout zur Verfügung und Sie müssen es in Ihrem Design.Tabelle 2. Neue Konfigurationsqualifizierer für die Bildschirmgröße (eingeführt in Android 3.2). Bildschirmkonfiguration Qualifier-Werte Beschreibung kleinstesWidth swdp.

Beispiele: sw600dp sw720dp

Die grundlegende Größe eines Bildschirms, angegeben durch die kürzeste Dimension des verfügbaren Bildschirmbereichs. Insbesondere ist das Gerät kleinste Breite ist die kürzeste verfügbare Höhe des Bildschirms und width (Sie können es auch als die "kleinste mögliche Breite" für des Bildschirms betrachten). Sie können dieses Qualifikationsmerkmal verwenden, um sicherzustellen, dass unabhängig von Die aktuelle Ausrichtung des Bildschirms hat Ihre Anwendung mindestens Breite für seine Benutzeroberfläche verfügbar. 

Zum Beispiel, wenn für Ihr Layout die kleinste Dimension von .__ erforderlich ist. Der Bildschirmbereich muss immer mindestens 600 dp betragen, dann können Sie diese .__ verwenden. Qualifizierer zum Erstellen der Layoutressourcen res/layout-sw600dp /. Das Das System verwendet diese Ressourcen nur, wenn die kleinste Dimension von Der verfügbare Bildschirm ist mindestens 600dp, unabhängig davon, ob die 600dp Seite ist die vom Benutzer wahrgenommene Höhe oder Breite. Die kleinste Breite ist eine Feste Bildschirmgröße des Geräts; die Geräte kleinsteBreite ändert sich nicht, wenn sich die Ausrichtung des Bildschirms ändert.

Die kleinste Breite eines Geräts berücksichtigt Bildschirmdekorationen und System-UI. Wenn das Gerät beispielsweise über eine permanente Benutzeroberfläche verfügt Elemente auf dem Bildschirm, die den Raum entlang der Achse von .__ berücksichtigen. kleinsteBreite, das System deklariert die kleinsteBreite als kleiner als die tatsächliche Bildschirmgröße, weil dies Bildschirmpixel nicht sind für Ihre Benutzeroberfläche verfügbar.

Dies ist eine Alternative zu den allgemeinen Qualifikationsmerkmalen für die Bildschirmgröße (klein, normal, groß, xlarge), mit dem Sie ein diskretes .__ definieren können. Nummer für die effektive Größe, die für Ihre Benutzeroberfläche verfügbar ist. Verwenden von Die kleinste Breite, um die allgemeine Bildschirmgröße zu bestimmen, ist nützlich, weil Breite ist oft der treibende Faktor bei der Gestaltung eines Layouts. Eine Benutzeroberfläche wird Scrollen Sie oft vertikal, haben jedoch ziemlich harte Einschränkungen für die Minimaler Platzbedarf ist horizontal erforderlich. Die verfügbare Breite ist auch die Schlüsselfaktor bei der Bestimmung, ob ein Layout für einen Bereich für .__ verwendet werden soll. Mobilteile oder Multi-Panel-Layout für Tablets. Daher interessieren Sie sich wahrscheinlich am meisten ungefähr die kleinste mögliche Breite auf jedem Gerät . Verfügbare Bildschirmbreite Wdp.

Beispiele: w720dp w1024dp

Gibt eine minimal verfügbare Breite in dp-Einheiten an, bei der die Ressourcen sollte verwendet werden - definiert durch den Wert. Das entsprechende System Der Wert für die Breite ändert sich, wenn die Ausrichtung des Bildschirms wechselt zwischen Landschaft und Porträt, um die aktuelle tatsächliche Breite wiederzugeben das ist für Ihre Benutzeroberfläche verfügbar. 

Dies ist häufig hilfreich, um zu bestimmen, ob ein Layout mit mehreren Fenstern verwendet werden soll denn selbst auf einem Tablet-Gerät möchten Sie oft nicht dasselbe Mehrbereichslayout für Hochformat wie bei Querformat . Daher können Sie hiermit die Mindestbreite angeben, die für die .__ erforderlich ist. Layout, anstatt sowohl die Bildschirmgröße als auch die Ausrichtung zu verwenden Qualifikanten zusammen. Verfügbare Bildschirmhöhe HDP.

Beispiele: h720dp h1024dp usw.

Gibt eine minimale Bildschirmhöhe in dp-Einheiten an, bei der die Ressourcen sollte verwendet werden - definiert durch den Wert. Das entsprechende System Wert für die Höhe ändert sich, wenn die Ausrichtung des Bildschirms wechselt zwischen Landschaft und Porträt, um die aktuelle tatsächliche Höhe wiederzugeben das ist für Ihre Benutzeroberfläche verfügbar. 

Die Verwendung der zur Festlegung der für Ihr Layout erforderlichen Höhe ist in .__ hilfreich. Auf dieselbe Weise wie bei wdp wird die erforderliche Breite anstelle von .__ festgelegt. sowohl die Bildschirmgrößen- als auch die Orientierungsqualifikation. Die meisten Apps benötigen dieses Qualifikationsmerkmal nicht, da UIs häufig einen Bildlauf durchführen vertikal und sind daher flexibler mit der Höhe verfügbar, während die Breite starrer ist.

Während der Verwendung dieser Qualifikanten kann dies komplizierter erscheinen als die Verwendung von Bildschirmgrößengruppen, sollte es tatsächlich einfacher sein, wenn Sie die Anforderungen für Ihre Benutzeroberfläche. Wenn Sie Ihre Benutzeroberfläche entwerfen, ist die Hauptsache Sie interessieren sich wahrscheinlich für die tatsächliche Größe, bei der Ihre Anwendung wechselt zwischen einer Benutzeroberfläche im Handset-Stil und einer Tablet-Benutzeroberfläche, die .__ verwendet. mehrere Scheiben. Der genaue Punkt dieses Schalters hängt von Ihrem .__ ab. besonderes Design - vielleicht benötigen Sie eine Breite von 720dp für Ihr Tablet-Layout, vielleicht reicht 600dp oder 480dp oder eine Zahl zwischen diesen. Verwenden von Mit diesen Qualifikationsmerkmalen in Tabelle 2 haben Sie die genaue Größe bei was dein Layout ändert.Weitere Informationen zu diesen Größenkonfigurationskennzeichnern finden Sie in der Dokument mit Ressourcen bereitstellen. Konfigurationsbeispiele.

Um Ihnen zu helfen, einige Ihrer Designs für verschiedene Arten von Geräte, hier einige Zahlen für typische Bildschirmbreiten:.

320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc). 480dp: a tweener tablet like the Streak (480x800 mdpi). 600dp: a 7” tablet (600x1024 mdpi). 720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).

Unter Verwendung der Größenqualifizierer aus Tabelle 2 kann Ihre Anwendung .__ wechseln. zwischen Ihren verschiedenen Layout-Ressourcen für Mobilteile und Tablets mit eine beliebige Anzahl für Breite und/oder Höhe. Wenn zum Beispiel 600dp .__ ist. Die kleinste verfügbare Breite, die von Ihrem Tablet-Layout unterstützt wird, können Sie Stellen Sie diese zwei Layoutsätze bereit:

res/layout/main_activity.xml # Für Mobilteile 
 res/layout-sw600dp/main_activity.xml # Für Tablets

In diesem Fall muss die kleinste Breite des verfügbaren Bildschirmbereichs .__ sein. 600dp, damit das Tablet-Layout angewendet wird.

für andere Fälle, in denen Sie Ihre Benutzeroberfläche weiter anpassen möchten Sie können zwischen Größen wie 7-Zoll- und 10-Zoll-Tablets unterscheiden. zusätzliche kleinste Breitenlayouts:

Res/layout/main_activity.xml # Für Mobilteile (kleiner als 600dp verfügbare Breite) res/layout-sw600dp/main_activity.xml # Für 7 ” Tablets (600dp breit und größer) res/layout-sw720dp/main_activity.xml.

Für 10 "-Tablets (720dp breit und größer)

beachten Sie, dass die beiden vorherigen Beispielressourcen die .__ verwenden. Qualifier "kleinste Breite", swdp, der den kleinsten Wert von .__ angibt. die beiden Seiten des Bildschirms, unabhängig vom aktuellen Gerät Orientierung. Daher ist die Verwendung von swdp eine einfache Möglichkeit, die .__ anzugeben. Gesamtgröße des Bildschirms für Ihr Layout durch Ignorieren des Bildschirms Orientierung. 

In einigen Fällen kann jedoch Folgendes wichtig sein: __. genau wie viel Breite oder Höhe derzeit verfügbar ist. Zum Beispiel, Wenn Sie ein zweigeteiltes Layout mit zwei Fragmenten nebeneinander haben, können Sie Vielleicht möchten Sie es verwenden, wenn der Bildschirm mindestens 600 dB von .__ bereitstellt. Breite, ob sich das Gerät im Querformat oder im Hochformat befindet. Im In diesem Fall könnten Ihre Ressourcen so aussehen:

Res/layout/main_activity.xml # Für Mobilteile (kleiner als __. 600dp verfügbare Breite) res/layout-w600dp/main_activity.xml # Multi-Fenster (jeder Bildschirm mit 600dp verfügbarer Breite oder mehr).

Beachten Sie, dass der zweite Satz das Qualifikationsmerkmal "Verfügbare Breite" .__ verwendet. wdp. Auf diese Weise kann ein Gerät je nach .__ tatsächlich beide Layouts verwenden. über die Ausrichtung des Bildschirms (wenn die zur Verfügung stehende Breite in einer Ausrichtung mindestens __ 600dp und in der anderen __ Orientierung weniger als 600 dp beträgt)

wenn die verfügbare Höhe für Sie ein Problem ist, können Sie dasselbe tun mit dem HDP-Qualifier. Oder kombinieren Sie sogar wdp und hdp Qualifikatoren, wenn Sie wirklich genau sein müssen.

Notice that the second set is using the "available width" qualifier, wdp. This way, one device may actually use both layouts, depending on the orientation of the screen (if the available width is at least 600dp in one orientation and less than 600dp in the other orientation).

If the available height is a concern for you, then you can do the same using the hdp qualifier. Or, even combine the wdp and hdp qualifiers if you need to be really specific.

147
Herry

Ich denke, es ist zu spät, um auf diesen Thread zu antworten. Ich möchte jedoch gerne meine Idee oder Methode zur Lösung von Problemen mit der Textgröße über Geräte mit unterschiedlichen Auflösungen mitteilen. Viele Android-Entwickler-Websites schlagen vor, dass Sie für die Textgröße die Einheit sp verwenden müssen, die die Textgröße für Geräte mit unterschiedlichen Auflösungen berücksichtigt. Ich kann jedoch immer nicht das gewünschte Ergebnis erzielen. Ich habe also eine Lösung gefunden, die ich aus meinen letzten 4-5 Projekten verwende und deren Funktion gut funktioniert. Gemäß meinem Vorschlag müssen Sie die Textgröße für jedes Auflösungsgerät platzieren, was etwas mühsam ist, aber Ihre Anforderung erfüllt. Jeder Entwickler muss auf das Verhältnis wie 4: 6: 8: 12 (h: xh: xxh: xxxh) achten. Jetzt müssen Sie im Ordner res des Ordners 4 Ordner mit Dimens-Datei erstellen, z.

  1. res/values-hdpi/dimens.xml
  2. res/values-xhdpi/dimens.xml
  3. res/values-xxhdpi/dimens.xml
  4. res/values-xxxhdpi/dimens.xml

Jetzt müssen Sie in der Datei dimens.xml Textgrößen platzieren. Ich zeige Ihnen Code für values-hdpi, ebenso müssen Sie Code für andere Auflösungswerte/dimens.xml-Datei eingeben.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <dimen name="text_size">4px</dimen>
</resources>

Für andere Auflösungen ist es wie xhdpi: 6px, xxhdpi: 8px, xxxhdpi: 12px. Dies wird mit dem Verhältnis (3: 4: 6: 8: 12) berechnet, das ich oben geschrieben habe. Lassen Sie uns andere Textgrößen mit dem obigen Verhältnis besprechen. Wenn Sie eine Textgröße von 12px in HDpi nehmen möchten, wäre dies in einer anderen Auflösung der Fall

  1. hDpi: 12px
  2. xhdpi: 18px
  3. xxhdpi: 24px
  4. xxxhdpi: 36px

Dies ist die einfache Lösung, um die erforderliche Textgröße für alle Auflösungen zu implementieren. Ich denke hier nicht an values-mdpi -Auflösungsgeräte. Wenn jemand eine Textgröße für diese Auflösung einschließen möchte, ist das Verhältnis 3: 4: 6: 8: 12. Bitte lassen Sie es mich wissen. Hoffe, es wird dir Leute helfen.

12
Rahul Sharma

Ich habe das selbe durch dimension und Paint so gemacht (mit dp aber nur für text und in drawText ())

XML:

   <dimen name="text_size">30sp</dimen>

Code:

   Paint p =new Paint();
       p.setTextSize(getResources().getDimension(R.dimen.text_Size));
9
LifeStyle

Manchmal ist es besser, nur drei Optionen zu haben

 style="@Android:style/TextAppearance.Small"

Verwenden Sie klein und groß, um sich von der normalen Bildschirmgröße zu unterscheiden.

<TextView
            Android:id="@+id/TextViewTopBarTitle"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            style="@Android:style/TextAppearance.Small"/>

Normalerweise müssen Sie nichts angeben.

<TextView
            Android:id="@+id/TextViewTopBarTitle"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"/>

Auf diese Weise können Sie das Testen und Festlegen von Abmessungen für verschiedene Bildschirmgrößen vermeiden.

8
kalan

Die unten genannte Android-Bibliothek kann von jedem verwendet werden. Dies ist die einfachste Möglichkeit, Textgrößen mit fast allen Bildschirmen aller Geräte kompatibel zu machen. Es wurde auf der Grundlage neuer Android-Konfigurationsqualifikatoren für die Bildschirmgröße (in Android 3.2 eingeführt) entwickelt. SmallestWidth swdp.

https://github.com/intuit/sdp

2

Ich denke, Sie können das archivieren, indem Sie für jede Bildschirmgröße mehrere Layoutressourcen hinzufügen. Beispiel:

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size with small text
res/layout-large/my_layout.xml       // layout for large screen size with larger text
res/layout-xlarge/my_layout.xml      // layout for extra large screen size with even larger text
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

Reference: 1. http://developer.Android.com/guide/practices/screens_support.html

1
NguyenDat

So vereinheitlichen Sie alle Bildschirme, um dieselben Elementgrößen einschließlich der Schriftgröße anzuzeigen: - Gestalten Sie die Benutzeroberfläche auf einer Bildschirmgröße mit der gewünschten Größe, die Sie während des Entwurfs finden, dh die TextView-Schriftgröße beträgt 14dp bei der Standardbildschirmgröße von 4'6 Zoll .

  • Programmgesteuert die physikalische Bildschirmgröße der anderen Telefone berechnen, d. H. 5'2 Zoll anderer Telefone/Bildschirme. 

  • Verwenden Sie eine Formel, um die prozentuale Differenz zwischen den beiden Bildschirmen zu berechnen. d. h. was ist der Unterschied in% zwischen 4'6 und 5'2.

  • Berechnen Sie die Pixeldifferenz zwischen den beiden TextViews anhand der obigen Formel.

  • Rufen Sie die tatsächliche Größe (in Pixel) der TextView-Schriftgröße ab und wenden Sie den (zuvor berechneten) Pixelunterschied auf die Standardschriftgröße an.

Auf diese Weise können Sie das dynamische Seitenverhältnis auf alle Bildschirmgrößen anwenden und das Ergebnis ist großartig. Sie haben auf jedem Bildschirm das gleiche Layout und die gleichen Größen.

Es kann anfangs etwas knifflig sein, erreicht aber das Ziel vollständig, wenn Sie die Formel herausgefunden haben. Bei dieser Methode müssen Sie nicht mehrere Layouts erstellen, um verschiedene Bildschirmgrößen anzupassen.

0
SolidSnake

Wenn Sie API 26 haben, können Sie autoSizeTextType verwenden:

<Button
  app:autoSizeTextType="uniform" />

Die Standardeinstellung ermöglicht die automatische Größenanpassung der TextView-Skalierung auf horizontalen und vertikalen Achsen.

https://developer.Android.com/guide/topics/ui/look-and-feel/autosizing-textview

0
Bonne Bogaert

Sie können auch die Eigenschaften weightSum und layout_weight verwenden, um Ihren anderen Bildschirm anzupassen.

Dafür musst du Android:layout_width = 0dp und Android:layout_width = (was auch immer du willst);

0
Harshit