Ich versuche, meinen TextViews mithilfe android:lineSpacingMultiplier
der Dokumentation einen kleinen Abstand zwischen den Zeilen hinzuzufügen :
Zusätzlicher Abstand zwischen Textzeilen als Multiplikator.
Muss ein Gleitkommawert sein, z. B. "1.2".
Da ich dies in einigen verschiedenen TextViews verwende, möchte ich meinen Ressourcen eine globale Dimension / einen globalen Wert hinzufügen, weiß aber nicht, welches Tag ich verwenden soll, falls es überhaupt vorhanden ist. Ich habe alle Ressourcentypen ausprobiert , die für mich sinnvoll sind, aber keiner von ihnen funktioniert.
Was ich gerne hätte, wäre ungefähr so:
<resources>
<dimen name="text_line_spacing">1.4</dimen>
</resources>
Bearbeiten: Mir ist bekannt android:lineSpacingExtra
(was eine Dimension mit einer angehängten Einheit benötigt), aber ich würde sie gerne verwenden, android:lineSpacingMultiplier
wenn dies möglich ist.
<item type="string" format="float" name="my_float">0.5</item>
und diesen Code, um es abzurufen:float my_float = Float.parseFloat (getResources ().getString (R.string.my_float));
<string>
Tag gemacht werden?Wie in diesem Link beschrieben http://droidista.blogspot.in/2012/04/adding-float-value-to-your-resources.html
In dimen.xml deklarieren
Referenzierung von XML
Referenzierung von Java
quelle
Alle Lösungen empfehlen, den vordefinierten Gleitkommawert durch Code zu verwenden.
Wenn Sie sich jedoch fragen, wie Sie auf den vordefinierten Gleitkommawert in XML verweisen sollen (z. B. Layouts), finden Sie im Folgenden ein Beispiel dafür, was ich getan habe und es funktioniert einwandfrei:
Definieren Sie Ressourcenwerte wie
type="integer"
aberformat="float"
, zum Beispiel:Und verwenden Sie sie später in Ihrem Layout, indem Sie
@integer/name_of_resource
beispielsweise Folgendes verwenden :quelle
<dimen>
Ich habe auch eine Problemumgehung gefunden, die ohne Warnungen gut zu funktionieren scheint:
Dann:
Warnung : Es funktioniert nur, wenn Sie das Dimen aus Java-Code verwenden, nicht aus XML
quelle
type="fraction"
, um Fehler im Java-Code zu vermeidenFügen Sie float.xml einen Float hinzu:
<item format="float" name="my_dimen" type="dimen">1.2</item>
So verweisen Sie aus XML:
Um diesen Wert programmgesteuert zu lesen, können Sie ihn
ResourcesCompat.getFloat
aus androidx.core verwendenGradle-Abhängigkeit:
implementation("androidx.core:core:${version}")
Verwendung:
quelle
Wir können es auch als Richtlinie für das Einschränkungslayout verwenden.
Erstellen Sie die Datei integer.xml und fügen Sie sie hinzu
Verwendung aus einer layout.xml-Datei
quelle
Ich habe einen Stil verwendet, um dieses Problem zu lösen. Der offizielle Link ist hier .
Ziemlich nützliches Zeug. Sie erstellen eine Datei, in der Ihre Stile gespeichert sind (z. B. "styles.xml"), und definieren sie darin. Sie verweisen dann auf die Stile in Ihrem Layout (wie "main.xml").
Hier ist ein Beispielstil, der macht, was Sie wollen:
Angenommen, Sie möchten damit eine einfache Textansicht ändern. In Ihre Layoutdatei würden Sie Folgendes eingeben:
Probieren Sie es aus - so wird im Wesentlichen die gesamte integrierte Benutzeroberfläche auf dem Android ausgeführt. Durch die Verwendung von Stilen haben Sie die Möglichkeit, alle möglichen anderen Aspekte Ihrer Ansichten zu ändern.
quelle
Wenn Sie einfache Gleitkommazahlen haben, deren Bereich Sie steuern, können Sie auch eine Ganzzahl in den Ressourcen haben und durch die Anzahl der Dezimalstellen dividieren, die Sie direkt im Code benötigen.
Also so etwas
wird mit 2 Dezimalstellen verwendet
und das macht es 3.56f
Dies ist nicht die eleganteste Lösung, aber für einfache Projekte ist es praktisch.
quelle
Ich habe eine Lösung gefunden, die funktioniert, aber in LogCat zu einem
Warning
(WARN/Resources(268): Converting to float: TypedValue{t=0x3/d=0x4d "1.2" a=2 r=0x7f06000a}
) führt.quelle
Obwohl ich in der Vergangenheit die akzeptierte Antwort verwendet habe, scheint es mit den aktuellen Build Tools möglich zu sein:
Ich verwende Build Tools Hauptversion 29.
quelle