我在我的应用程序中使用自定义字体,所以我想要一个Crouton的自定义字体。我试过用setTextAppearance做它,它不起作用。
<?xml version="1.0" encoding="utf-8"?>
<com.ecab.ui.custom.TextViewCustomFont
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/com.crouton"
android:id="@+id/crouton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ban_confirmation"
android:gravity="center"
android:text="TEST"
android:textColor="@android:color/white"
custom:typeface="gothamBold" />
在Style类中:
INFOCUSTOM = new Builder().setDuration(3000).setTextAppearance(R.id.crouton).build();
然后,我尝试通过使用我的字体更改setTypeface()来实现它,它不起作用。
在Crouton课程中:
private TextView initializeTextView(final Resources resources) {
TextView text = new TextView(this.activity);
text.setId(TEXT_ID);
text.setText(this.text);
text.setTypeface(MyFonts.getGothamBookBold(this.activity));
Log.d(Constants.D_TAG, "chaneg the typeFace");
text.setGravity(this.style.gravity);
// set the text color if set
if (this.style.textColorResourceId != 0) {
text.setTextColor(resources.getColor(this.style.textColorResourceId));
}
// Set the text size. If the user has set a text size and text
// appearance, the text size in the text appearance
// will override this.
if (this.style.textSize != 0) {
text.setTextSize(TypedValue.COMPLEX_UNIT_SP, this.style.textSize);
}
// Setup the shadow if requested
if (this.style.textShadowColorResId != 0) {
initializeTextViewShadow(resources, text);
}
// Set the text appearance
if (this.style.textAppearanceResId != 0) {
text.setTextAppearance(this.activity, this.style.textAppearanceResId);
}
return text;
}
如何拥有自定义字体?
ps:库版本==&gt; 1.7
答案 0 :(得分:2)
好的,我发现了问题!
通过更改字体,它适用于第二种解决方案。我忘了删除
setTextAppearance(R.id.crouton)
Style类中的。所以我的自定义样式是这样的:
INFOCUSTOM = new Builder().setDuration(3000).setBackgroundDrawable(R.drawable.ban_confirmation).setHeight(LayoutParams.WRAP_CONTENT)
.build();
一个问题解决了,另一个问题到了:)!在背景可绘制的情况下,文本不是垂直中心
答案 1 :(得分:1)
您可以使用自定义样式,该样式使用文本的resourceId 通过Style.Builder.setTextAppearance(...)出现。
这将从styles.xml中获取引用并在其中使用它 Crouton的内部TextView。
然后你可以用你的C调用Crouton.makeText或Crouton.showText 自定义风格。
答案 2 :(得分:0)
MyFonts.getGothamBookBold()
怎么样?
但这应该有效:
private TextView initializeTextView(final Resources resources) {
TextView text = new TextView(this.activity);
text.setId(TEXT_ID);
text.setText(this.text);
Typeface myTypeFace = Typeface.createFromAsset(this.activity.getAssets(), "gothamBold.ttf");
text.setTypeface(myTypeFace);
text.setGravity(this.style.gravity);
// set the text color if set
if (this.style.textColorResourceId != 0) {
text.setTextColor(resources.getColor(this.style.textColorResourceId));
}