Wie erstelle ich eine benutzerdefinierte Textansicht?

Lesezeit: 4 Minuten

Wie erstelle ich eine benutzerdefinierte
Sunil_Suthar

Ich versuche, eine benutzerdefinierte Textansicht zu erstellen, in der die Schriftart aus einem bestimmten Pfad festgelegt ist. Bitte geben Sie mir ein Beispiel und wie ich das mit weniger Code machen kann:

<TextView
   android:id="@+id/textView2"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/accountInfoText"
   android:textColor="#727272"
   android:textSize="18dp" />

  • Verweisen Dies

    – Gespenst

    28. Februar 2012 um 06:21 Uhr

Wie erstelle ich eine benutzerdefinierte
Sonne

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;

public class FontTextView extends TextView {


    public FontTextView(Context context) {
      super(context);
      Typeface face=Typeface.createFromAsset(context.getAssets(), "Helvetica_Neue.ttf"); 
      this.setTypeface(face); 
    }

    public FontTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
     Typeface face=Typeface.createFromAsset(context.getAssets(), "Helvetica_Neue.ttf"); 
  this.setTypeface(face); 
    }

    public FontTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
     Typeface face=Typeface.createFromAsset(context.getAssets(), "Helvetica_Neue.ttf"); 
  this.setTypeface(face); 
    }

    protected void onDraw (Canvas canvas) {
        super.onDraw(canvas);
        
       
    }

}

und im xml:

<com.util.FontTextView
                    android:id="@+id/textView2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/accountInfoText"
                    android:textColor="#727272"
                    android:textSize="18dp" />

  • Ich empfehle die Verwendung eines Singletons zum Anwenden der Schriftart, um zu vermeiden, dass die Schriftart jedes Mal aus Assets erstellt wird.

    – Jack Mahoney

    26. April 13 um 6:04 Uhr

  • @JackMahoney +1 für deinen sehr hilfreichen Kommentar. Jetzt ist meine Bewerbung sehr schnell!!

    – Hamzeh Soboh

    20. Januar 14 um 11:18 Uhr

  • @JackMahoney haben Sie ein Beispiel für die Konvertierung einer benutzerdefinierten Ansicht in Singleton, um sie herumzuzeigen? Wäre hilfreich.

    – kabuto178

    20. Februar 14 um 20:39 Uhr

  • @ kabuto178 Hier ist ein Pseudo-Code, um Ihnen eine Vorstellung zu geben gist.github.com/jackmahoney/9181787

    – Jack Mahoney

    24. Februar 14 um 4:06 Uhr

  • Es ist besser, hier eine AppCompatTextView zu verwenden, Sie erhalten sogar eine Warnung, wenn Sie sie nicht verwenden, die Implementierung ist genau die gleiche, erweitern Sie einfach AppCompatTextView anstelle von TextView.

    – Trevor Hart

    2. Juli 18 um 18:19 Uhr

1644091446 315 Wie erstelle ich eine benutzerdefinierte
anleihe007

Erstellen Sie eine benutzerdefinierte Ansicht für Textview.

  1. Machen Sie den Eintrag in der attrs.xml Datei und geben Sie eine Option zum Auswählen von Schriftart als Liste in Benutzerdefiniert TextView.

    ….

  2. Erstellen Sie den Enum-Eintrag mit einer Liste von Schriftarten und weisen Sie eindeutige Werte zu

  3. Machen Sie Einträge aller Schriftarten in strings.xml

    Roboto-Bold Roboto-Medium Roboto-Light Roboto-Regular Roboto-Thin Roboto-Italic

  4. Erstellen Sie einen Asset-Ordner und kopieren Sie alle erforderlichen Schriftarten, die Sie in den Schriftartenordner einfügen möchten

  5. Erstellen Sie eine Klassenerweiterung TextView

    import android.content.Context;
    import android.content.res.TypedArray;
    import android.graphics.Typeface;
    import android.util.AttributeSet;
    import android.widget.TextView;
    
    /**
    * Created by ANKIT 
    */
    public class CustomFontTextView extends TextView {
    
    String customFont;
    
    public CustomFontTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        style(context, attrs);
    }
    
    public CustomFontTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        style(context, attrs);
    
    }
    
    private void style(Context context, AttributeSet attrs) {
    
        TypedArray a = context.obtainStyledAttributes(attrs,
                R.styleable.CustomFontTextView);
        int cf = a.getInteger(R.styleable.CustomFontTextView_fontName, 0);
        int fontName = 0;
        switch (cf)
        {
            case 1:
                fontName = R.string.Roboto_Bold;
                break;
            case 2:
                fontName = R.string.Roboto_Italic;
                break;
            case 3:
                fontName = R.string.Roboto_Light;
                break;
            case 4:
                fontName = R.string.Roboto_Medium;
                break;
            case 5:
                fontName = R.string.Roboto_Regular;
                break;
            case 6:
                fontName = R.string.Roboto_Thin;
                break;
            default:
                fontName = R.string.Roboto_Regular;
                break;
        }
    
        customFont = getResources().getString(fontName);
    
        Typeface tf = Typeface.createFromAsset(context.getAssets(),
                "font/" + customFont + ".ttf");
        setTypeface(tf);
        a.recycle();
    }
    }
    

Sie können diese benutzerdefinierte Klasse auf diese Weise verwenden. .. verwenden Sie Ihren Paketnamen.Klassennamen

 <ankit.com.customui.CustomFontTextView
  android:layout_width="match_parent"
  android:text="Hello World Ankit"
  android:textSize="16sp"
  app:fontName="Roboto_Medium"
  android:layout_height="wrap_content"/>

fügen Sie unten styleable in res/values/attrs.xml hinzu

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

  • viel bessere Implementierung als die akzeptierte Antwort.

    – Rahul Thakur

    3. Februar 17 um 12:01 Uhr

Wenn Sie in Kotlin schreiben, können Sie dies folgendermaßen tun. Fügen Sie zunächst Ihre Schriftart zu der hinzu Schriftart Mappe. Erstellen Sie dann eine separate Kotlin-Klasse. Nennen Sie es so etwas wie HeadlineTextView (oder was auch immer das einen Hinweis darauf gibt, wofür die TextView ist).

class HeadlineTextView(context: Context, attributeSet: AttributeSet) : AppCompatTextView(context, attributeSet) {

  init {
      applyFont()
  }

  private fun applyFont() {
    val headlineTypeface: Typeface=Typeface.create("Montserrat", Typeface.NORMAL)
    typeface=headlineTypeface
  }

}

Verwenden Sie jetzt diese benutzerdefinierte Textansicht in Ihrem XML. Ersetzen Sie dies –

<TextView
   android:id="@+id/textView2"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/accountInfoText"
   android:textColor="#727272"
   android:textSize="18dp" />

Mit diesem –

<com.gmail.something.myapp.HeadlineTextView
   android:id="@+id/textView2"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/accountInfoText"
   android:textColor="#727272"
   android:textSize="18dp" />

.

787450cookie-checkWie erstelle ich eine benutzerdefinierte Textansicht?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy