字体始终显示默认字体。
我的字体存储在 资产 / 字体 中。我试图使用其他字体,并重新编码字体。 PixlUI库也没有解决问题。
MainActivity.java
mysqli_query("SELECT product, expirydate, SUM(quantity), status FROM
stockmovement a LEFT JOIN (SELECT productid, product AS productname FROM
products) b ON a.product = b.productid WHERE a.status = '0' GROUP BY
a.product, a.expirydate HAVING SUM(a.quantity) > 0 ORDER BY a.product,
a.expirydate ASC");
activity_main.xml中
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
Typeface typeface = Typeface.createFromAsset(getAssets(),"fonts/OldEnglishFive.ttf");
button.setTypeface(typeface);
}
答案 0 :(得分:0)
如果您之前还没有尝试过使用过这种字体。我建议删除您的资源文件夹,在您的res文件夹中创建一个新的资产文件夹,然后将其移回原先的位置。有时Android Studio不接受构建的assets文件夹。
如此处所示Runtime Exception: Font not found for every font i've tried - Android
另外,我建议创建一个扩展Button
的类,以便在为按钮分配正确的XML时自动设置该小部件的字体。
一个例子是:
public class CustomFontButton extends Button {
AttributeSet attr;
public CustomFontButton(Context context) {
super(context);
setCustomFont(context, attr);
}
public CustomFontButton(Context context, AttributeSet attrs) {
super(context, attrs);
setCustomFont(context, attrs);
}
public CustomFontButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setCustomFont(context, attrs);
}
private void setCustomFont(Context ctx, AttributeSet attrs) {
String customFont = null;
TypedArray a = null;
if (attrs != null) {
a = ctx.obtainStyledAttributes(attrs, R.styleable.CustomFontButton);
customFont = a.getString(R.styleable.CustomFontButton_customFont);
}
if (customFont == null) customFont = "fonts/OldEnglishFive.ttf";
setCustomFont(ctx, customFont);
if (a != null) {
a.recycle();
}
}
public boolean setCustomFont(Context ctx, String asset) {
Typeface tf = null;
try {
tf = Typeface.createFromAsset(ctx.getAssets(), asset);
} catch (Exception e) {
Log.e("textView", "Could not get typeface", e);
return false;
}
setTypeface(tf);
return true;
}
}
然后在你的xml中你只需要改变
<yourpackagename.CustomFontButton
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="220dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:onClick="doSomething"
android:text="TEXT" />
在values文件夹中创建一个attrs.xml。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="CustomFontButton">
<attr name="customFont" format="string"/>
</declare-styleable>
</resources >
每次你想要按钮上的自定义字体(或大多数其他小部件,可以应用相同的逻辑)时,这样可以省去setTypeFace
答案 1 :(得分:0)
不要使用setTypeface方法直接设置Typeface,而是尝试下面的代码片段:
protected void onCreate(Bundle savedInstanceState) {
... //do whatever you want
Button button = (Button) findViewById(R.id.button);
Typeface typeface = Typeface.createFromAsset(getAssets(),"fonts/OldEnglishFive.ttf");
button.setText(changeFontStyle("your text", typeface));
}
// custom function for changing the font style of text
public Spannable changeFontStyle(String finalString, Typeface typeface){
spannable = new SpannableString(finalString);
spannable.setSpan(new CustomTypefaceSpan("", typeface), 0, finalString.length(), 0);
return spannable;
}
请知道是否有任何问题。
答案 2 :(得分:0)
一个不错的选择是仔细检查您的文件夹,字体和字体目录名称拼写。一个好主意是显示任何错误将被打印出来并发布给我们以便更好地理解问题。如果您也可以发布字体名称并仔细检查它们是否相同,并确保您的资产位于正确的位置,希望我帮助。