簡體   English   中英

Android可擴展列表查看項目字體樣式

[英]Android expandable list view items font style

我已按照以下鏈接中給出的教程:

http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/

如何在list_group.xml和list_item.xml中為textviews提供自定義字體(字體)。

我已將Arial.ttf文件復制到assets文件夾中。

請幫我。

您可以通過覆蓋TextView類來創建自定義textview,然后在xml中使用CustomTextView而不是使用TextView:

    public class CustomTextView extends TextView {

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

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

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

private void init(Context context, AttributeSet attrs) {

}

@Override
public void setTypeface(Typeface tf, int style) {
    if (!isInEditMode()) {
    Typeface normalTypeFace = Typeface.createFromAsset(getContext()
            .getAssets(), "Esans.ttf");
    Typeface boldTypeFace = Typeface.createFromAsset(getContext()
            .getAssets(), "EsansBol.ttf");
    Typeface lightTypeFace = Typeface.createFromAsset(getContext()
            .getAssets(), "EsansLig.ttf");
    Typeface mediumTypeFace = Typeface.createFromAsset(getContext()
            .getAssets(), "EsansMed.ttf");
    //Modifying styles to support the different styles of custom font
        switch (style) {
        case Typeface.NORMAL:
            super.setTypeface(normalTypeFace);
            break;
        case Typeface.BOLD:
            super.setTypeface(boldTypeFace);
            break;
        case Typeface.ITALIC:
            super.setTypeface(lightTypeFace);
            break;
        case Typeface.BOLD_ITALIC:
            super.setTypeface(mediumTypeFace);
            break;
        default:
            super.setTypeface(normalTypeFace);
            break;

        }
    }
}

}

您可以嘗試在xml中添加字體

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

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

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

public TextViewPlus(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.TextViewPlus);
    String customFont = a.getString(R.styleable.TextViewPlus_customFont);
    setCustomFont(ctx, customFont);
    a.recycle();
}

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

    setTypeface(tf);  
    return true;
}

}

在你的xml中

    <com.icl.examples.TextViewPlus
    android:id="@+id/textViewPlus1"
    android:layout_height="match_parent"
    android:layout_width="match_parent" 
    android:text="@string/info_text"
    android:textColor="@color/White"
    android:textStyle="bold"
    android:textSize="50sp"
    foo:customFont="Bamini.ttf">
</com.icl.examples.TextViewPlus>

將此添加到資源,res-> values-attrs.xml

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM