2 Stimmen

Kerning/Tracking für Text in Android bereitstellen

Ich versuche, die Abstände zwischen zwei Wörtern in einem Text zu vergrößern. Dazu bin ich auf viele Websites gestoßen, aber ich habe die unten stehende mit den genauen Informationen gefunden, die ich benötige.

http://developer.Android.com/reference/java/awt/font/TextAttribute.html

Ich möchte zum Beispiel die unten angegebene Konstante verwenden

public static final TextAttribute TRACKING 

für meinen Text. Wie soll ich das machen?

Hier sind alle textAttribute (Konstanten) aufgeführt, die ich mit einem Text verwenden kann. Aber ich weiß nicht, wie ich diese für meinen Text verwenden kann. Kann mir jemand dabei helfen?

0voto

Sherif elKhatib Punkte 45328

Ich habe diese Funktion geschrieben:

EINGABE

  • LinearLayout ll :

    das Layout, das Ihre "TexView" sein wird (stellen Sie sicher, dass es vertikal ausgerichtet ist)

  • String-Text:

    den Text

  • Kontext mKontext

    der Kontext

WAS ZU TUN

Ich habe die Teile kommentiert, die Sie bearbeiten müssen


/*
*  Copyright 2011 Sherif
*/

private void populateText(LinearLayout ll, String text , Context mContext) { 
    String [] textArray = text.split(" ");
    Display display = getWindowManager().getDefaultDisplay();
    ll.removeAllViews();
    int maxWidth = display.getWidth() - 20;

    LinearLayout.LayoutParams params; // to be used over and over
    LinearLayout newLL = new LinearLayout(mContext);
    newLL.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT));
    newLL.setGravity(Gravity.LEFT);
    newLL.setOrientation(LinearLayout.HORIZONTAL);

    int widthSoFar = 0;

    for (int i = 0 ; i < textArray.length ; i++ ){
        LL = new LinearLayout(mContext);
        LL.setOrientation(LinearLayout.HORIZONTAL);
        LL.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.BOTTOM);
        LL.setLayoutParams(new ListView.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

        TV = new TextView(mContext);
        TV.setText(textArray[i]);
        //TV.setTextSize(size);  <<<< SET TEXT SIZE
        TV.measure(0, 0);
        params = new LinearLayout.LayoutParams(TV.getMeasuredWidth(),
                LayoutParams.WRAP_CONTENT);
        //params.setMargins(5, 0, 5, 0);  // YOU CAN USE THIS
        LL.addView(TV, params);
        LL.measure(0, 0);
        widthSoFar += TV.getMeasuredWidth();// YOU MAY NEED TO ADD THE MARGINS
        if (widthSoFar >= maxWidth) {
            ll.addView(newLL);

            newLL = new LinearLayout(mContext);
            newLL.setLayoutParams(new LayoutParams(
                    LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            newLL.setOrientation(LinearLayout.HORIZONTAL);
            newLL.setGravity(Gravity.LEFT);
            params = new LinearLayout.LayoutParams(LL
                    .getMeasuredWidth(), LL.getMeasuredHeight());
            newLL.addView(LL, params);
            widthSoFar = LL.getMeasuredWidth();
        } else {
            newLL.addView(LL);
        }
    }
    ll.addView(newLL);
}

ANMERKUNG

Ich habe es nicht getestet ... Ich habe es für komplexere Dinge verwendet und es hat funktioniert

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X