Custom Font in einer ListView verwenden – Android Tutorial

In einer ListView ist es nicht ganz so einfach eine eigene Schriftart zu verwenden wie das bei TextViews der Fall ist. Identisch ist jedoch wie man die Schriftart ablegen sollte. Falls man noch nicht weiß wie das geht, ist es auf folgender Seite erklärt:Eigenen Custom Font benutzen – Android Tutorial

Was man anschließend tun muss ist, einen eigenen custom TextView zu erstellen. Dafür geht man in den XML Code der Prototyp Zelle der ListView und ändert den TextView in den später erstellten Typen CustomTextView um. Das ganze sollte dann abgeändert so aussehen:

Vorher:

<TextView
 android:id="@+id/R.id.textview1"
 android:layout_width="wrap_parent"
 android:layout_height="wrap_content"
 />

Nachher: 

<com.example.CustomTextView
 android:id="@+id/R.id.textview1"
 foo:customFont="courier.ttf"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 />

Bei foo:customFont wird dabei der Name der neuen Schriftart angegeben. In diesem Fall „courier.ttf“. Danach wird die XML Datei erstellt. Dafür erstellt man nun ein neues XML File namens „attrs“ und zwar in diesem Ordner /app/src/main/res/values. In diese File kommt folgender Code:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="CustomTextView">
        <attr name="customFont" format="string"/>s
    </declare-styleable>
</resources>

Jetzt geht es darum, denn „CustomTextView“ zu programmieren. Dafür erstellt man im Ordner wo auch die anderen Klassen liegen eine neue Klasse namens „CustomTextView“. In dieser Klasse schreibt nun diesen Code hier:

import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;
import android.content.res.TypedArray;
import android.util.Log;


public class CustomTextView extends TextView {
    private static final String TAG = "TextView";

    public CustomTextView(Context context) {
        super(context);
    }

    public CustomTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setCustomFont(context, attrs);
    }

    public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setCustomFont(context, attrs);
    }

    private void setCustomFont(Context ctx, AttributeSet attrs) {
        TypedArray a = ctx.obtainStyledAttributes(attrs, R.styleable.CustomTextView);
        String customFont = a.getString(R.styleable.CustomTextView_customFont);
        setCustomFont(ctx, customFont);
        a.recycle();
    }

    public boolean setCustomFont(Context ctx, String asset) {
        Typeface tf = null;
        try {
            tf = Typeface.createFromAsset(ctx.getAssets(), "fonts/" + asset);
        } catch (Exception e) {
            Log.e(TAG, "Could not get typeface: " + e.getMessage());
            return false;
        }

        setTypeface(tf);

        return true;
    }

}

Sollte extends TextView dabei rot unterstrichen werden, kann dies ignorieren.

Hat man nun eine passende Schriftart vom Typ ttf oder otf in den fonts Ordner abgelegt, wird nun die ListView in der eigenen Schriftart angezeigt.

Custom Font in einer ListView verwenden – Android Tutorial

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie mehr darüber, wie Ihre Kommentardaten verarbeitet werden .