[JAVA] So stellen Sie das Bild mithilfe der Symbolschriftart (Symbole) links / rechts von der Schaltfläche auf zeichnbar ein

Überblick

Die Schriftart eines Symbols ist praktisch, nicht wahr? Mit Symbolschriftarten können Sie Symbolbilder in Ihrem Text anzeigen. Mit anderen Worten, Sie können ganz einfach Symbole + Textschaltflächen erstellen. Da es jedoch als ein Element angezeigt wird, besteht das Problem, dass für Text und Symbol keine unterschiedlichen Größen verwendet werden können und die Grundlinie zwischen Symbol und Text ausgerichtet ist.

Android-Schaltflächen können mithilfe der Attribute drawableLeft und drawableRight Symbole in den Schaltflächen anzeigen. Dieses Attribut scheint das obige Problem zu lösen, kann jedoch nicht so verwendet werden, wie es ist, da das Bild angegeben werden muss.

Daher werde ich erklären, wie die Symbolschrift in einen zeichnbaren Vektor konvertiert und als Symbol angezeigt wird.

Iconics wird als Bibliothek für die Verwendung von Icon-Schriftarten verwendet.

Ergebnis

Wenn Sie das Attribut drawable_icon_font_left wie unten gezeigt angeben, wird das Symbol gut angezeigt.

<Button
    android:text="{faw-android} android"
    />
<Button
    android:text="android"
    app:drawable_icon_font_left="@{`faw_android`}"
    />

image1

Wie es funktioniert

Iconics installieren und dataBinding aktivieren

Fügen Sie die folgenden Einstellungen in ** build.gradle ** hinzu. Hier verwenden wir AwesomeFont als Beispiel.

android {
    ...
    dataBinding {
        enabled = true
    }
}

dependencies {
    ...
    compile "com.mikepenz:iconics-core:2.8.2@aar"
    compile 'com.mikepenz:fontawesome-typeface:4.7.0.0@aar'
}

Aktivieren Sie Iconics

Fügen Sie der zu verwendenden Aktivität und dem Fragment die folgenden Einstellungen hinzu.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        LayoutInflaterCompat.setFactory(getLayoutInflater(), new IconicsLayoutInflater(getDelegate()));

        super.onCreate(savedInstanceState);
        DataBindingUtil.setContentView(this, R.layout.activity_main);
    }
}

BindingAdapter-Definition

** Definieren Sie das Attribut drawable_icon_font_left **.

Innerhalb der Methode wird aus den angegebenen Zeichen ein Drawable generiert. Zu diesem Zeitpunkt können Sie die gleiche Farbe wie der Text festlegen oder die Symbolgröße etwas größer als die Textgröße nach Ihren Wünschen einstellen.

public class BindingAdapterManager {

    @BindingAdapter("drawable_icon_font_left")
    public static void setDrawableIconFontLeft(final Button button, final String icon) {
        final Context context = button.getContext();
        final IconicsDrawable iconicsDrawable = new IconicsDrawable(context)
                .icon(FontAwesome.Icon.valueOf(icon))
                .color(button.getCurrentTextColor())
                .sizePx((int)(button.getTextSize() * 1.25));
        button.setCompoundDrawables(iconicsDrawable, null, null, null);
    }
}

Stichprobe

Ich habe ein Projekt, das unter Drawable-Icon-Font @ github funktioniert.

Vielen Dank

Diese Tipps entstanden während der Entwicklung einer "Website, auf der Sie Fotomaterial für Smartphones Snapmart kaufen und verkaufen können". Leider befindet sich die Android-Version noch in der Entwicklung und ist noch nicht verfügbar. Wenn Sie ein iPhone haben, laden Sie es bitte herunter und verwenden Sie es! Snapmart App (iOS)

Recommended Posts

So stellen Sie das Bild mithilfe der Symbolschriftart (Symbole) links / rechts von der Schaltfläche auf zeichnbar ein
Bearbeiten Sie Pixel, um ein Bild eines Mandelbrot-Sets zu erstellen
[Rails 6] So legen Sie ein Hintergrundbild in Rails [CSS] fest
[Schienen] So zeigen Sie Bilder in der Ansicht an
So ermitteln Sie die Länge einer Audiodatei mit Java
So machen Sie den Einzug zu zwei Einzelbyte-Leerzeichen in der JAXB-Implementierung des JDK
[Java] Wie man mit der String-Klasse an die Spitze eines bestimmten Strings kommt
So ändern Sie den Wert einer Variablen an einem Haltepunkt in IntelliJ
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
[Swift] So ermitteln Sie die Anzahl der Elemente in einem Array (Super Basic)
Versuchen Sie, mit Scala mithilfe der Standardbibliothek von Java Text zu einem Bild hinzuzufügen
Machen Sie einen Rand links vom TextField
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
Stellen Sie die Zeit von LocalDateTime auf eine bestimmte Zeit ein
[Hinweis] [Anfänger] Schreiben, wenn der Wert eines Array-Elements in einem sich wiederholenden Satz von Ruby geändert wird
So erstellen Sie eine eindeutige Datenkombination in der Schienen-Zwischentabelle
So legen Sie Umgebungsvariablen in der Eigenschaftendatei der Spring-Boot-Anwendung fest
Ich habe ein Beispiel erstellt, wie ein Delegat in Swift UI 2.0 mit MapKit geschrieben wird
So installieren Sie Docker in der lokalen Umgebung einer vorhandenen Rails-App [Rails 6 / MySQL 8]
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
So legen Sie die Protokollstufe fest, die in der Release-Version von orhanobut / logger angezeigt werden soll
Verwendung von git mit der Leistung von jgit in einer Umgebung ohne git-Befehle
So implementieren Sie ein kreisförmiges Profilbild mit CarrierWave und R Magick in Rails
Zusammenfassung der Verwendung des im IE festgelegten Proxy-Sets bei der Verbindung mit Java
[Rails] So zeigen Sie die Wettervorhersage der registrierten Adresse auf Japanisch mit OpenWeatherMap an
So machen Sie ein Bild mit Processing teilweise transparent
So stellen Sie die Anzeigezeit in Rails auf japanische Zeit ein
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
So beurteilen Sie den Klick eines beliebigen Bildbereichs
Wir haben eine Umgebung zum Ausführen von Komponententests mithilfe der Oracle-Datenbank (oracle12c) auf dem Docker-in-Docker-Image (dind) von GitLab-CI erstellt.
So geben Sie ein Array für den Rückgabewert / das Rückgabeargument einer Methode in der CORBA IDL-Datei an
In Anbetracht der Einführung der Java-Sprache in der Reiwa-Ära ~ Auswahl eines sicheren SDK
Fügen Sie dem Header-Link mit Rails fontawesome ein Symbol hinzu
So stellen Sie die Chronik ein, wenn sich die Zeit in CentOS7 verschiebt
So ändern Sie eine Zeichenfolge in einem Array in eine Zahl in Ruby
So erstellen Sie ein Platzhalterteil zur Verwendung in der IN-Klausel
So rufen Sie den Hashwert in einem Array in Ruby ab
So verschieben Sie eine andere Klasse mit einer Schaltflächenaktion einer anderen Klasse.
[Ruby] So rufen Sie den Inhalt des Doppel-Hash ab
So fügen Sie dieselben Indizes in ein verschachteltes Array ein
So leiten Sie den letzten Tag des Monats in Java ab
[jsoup] So erhalten Sie die gesamte Dokumentation
So richten Sie einen Proxy mit Authentifizierung in Feign ein
[Rails] So konvertieren Sie den URI des von http gesendeten Bildes in https, wenn Sie die Twitter-API verwenden
[Java] So suchen Sie mit der Methode includes nach Werten in einem Array (oder einer Liste)
Mit der Gesichtserkennungsfunktion von Watson Visual Recognition habe ich versucht, ein Ganzkörperbild einer Person in ein Bild nur des Gesichtsteils zu verarbeiten
So bestimmen Sie, ob Sie in PagerView nach links oder rechts gewechselt haben
[Swift5] So erhalten Sie ein Array und eine Reihe von Unterschieden zwischen Arrays
So legen Sie die IP-Adresse und den Hostnamen von CentOS8 fest
So zeigen Sie 0 auf der linken Seite des Standardeingabewerts an
So geben Sie den Wert aus, wenn sich ein Array im Array befindet
Korrigieren Sie den Namen der Kriegsdatei auf den in Maven festgelegten
So erhalten Sie den Inhalt von Map mithilfe des for-Anweisungsmemorandums
So erhalten Sie die ID des automatisch inkrementierten PRIMAY-Schlüssels in MyBatis
Die in /lib/calendars.properties von Java jre festgelegte Millisekunde ist UTC
Verwandeln Sie ein Array von Strings in eine Liste von Ganzzahlen in Java
Speichern der im Textbereich eingegebenen Informationen in einer Variablen in der Methode
So geben Sie eine Liste von Zeichenfolgen in JSF als durch Kommas getrennte Zeichenfolgen aus
So beheben Sie den unbekannten Fehler, der bei der Verwendung von slf4j in Java aufgetreten ist