如何设置字体,其 ttfassets
通过 xml 驻留在我的文件夹中?我知道如何以编程方式做到这一点,但你怎么能通过 xml 做到这一点?提前致谢。
5 回答
您不能直接使用 XML 来执行此操作,但是您可以扩展TextView
和设置默认字体。
package com.nannu;
import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;
public class NanTV extends TextView{
private Context c;
public NanTV(Context c) {
super(c);
this.c = c;
Typeface tfs = Typeface.createFromAsset(c.getAssets(),
"font/yourfont.ttf");
setTypeface(tfs);
}
public NanTV(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.c = context;
Typeface tfs = Typeface.createFromAsset(c.getAssets(),
"font/yourfont.ttf");
setTypeface(tfs);
// TODO Auto-generated constructor stub
}
public NanTV(Context context, AttributeSet attrs) {
super(context, attrs);
this.c = context;
Typeface tfs = Typeface.createFromAsset(c.getAssets(),
"font/yourfont.ttf");
setTypeface(tfs);
}
}
在你的布局中使用 newTextView
<com.nannu.NanTV
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge"
/>
我从我的上一个答案中发布这个https://stackoverflow.com/a/11239305/1166537
如果您创建自己的TextView
派生,则可以添加该类以编程方式处理的 XML 属性。这样,您指定了某种字体,它将在运行时设置,但您通过 XML 来完成。:)
否则,没有已知的方法可以实现所请求的行为。
您可以通过编写自定义 TextView 来做到这一点,否则您必须以编程方式设置它。有关更多详细信息,请参阅此链接
我在这里创建了一个库来解决这个问题:http ://responsiveandroid.com/2012/03/15/custom-fonts-in-android-widgets.html
您扩展一个 TextView 并在 xml 中设置字体的名称。有一个可下载的示例。
您可以在 assets/fonts 下包含自定义字体,然后使用 https://github.com/browep/AndroidCustomFontWidgets/ 中的代码
您可以在 XML 中指定字体,例如
<com.github.browep.customfonts.view.FontableTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="This is in a custom font"
app:font="MyFont-Bold.otf" />
该代码支持 FontableTextView 和 FontableButton,但如果您需要,它很容易扩展以支持其他小部件类型。