Java 文本视图、编辑文本和给出错误的按钮的字体
我尝试使用TypeFace类在TextView上实现自定义字体,如下所示:Java 文本视图、编辑文本和给出错误的按钮的字体,java,android,textview,typeface,Java,Android,Textview,Typeface,我尝试使用TypeFace类在TextView上实现自定义字体,如下所示: package com.royal.bikers; import android.app.Activity; import android.os.Bundle; public class AboutUs extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onC
package com.royal.bikers;
import android.app.Activity;
import android.os.Bundle;
public class AboutUs extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about);
TextView aboutUs1 = (TextView) findViewById(R.id.aboutUs1);
TextView aboutUs2 = (TextView) findViewById(R.id.aboutUs2);
TextView aboutUs3 = (TextView) findViewById(R.id.aboutUs3);
TextView aboutUs4 = (TextView) findViewById(R.id.aboutUs4);
TextView aboutUs5 = (TextView) findViewById(R.id.aboutUs5);
TextView aboutUsTitle = (TextView) findViewById(R.id.aboutUsTitle);
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Roboto-Thin.ttf");
aboutUs1.setTypeface(tf);
aboutUs2.setTypeface(tf);
aboutUs3.setTypeface(tf);
aboutUs4.setTypeface(tf);
aboutUs5.setTypeface(tf);
aboutUsTitle.setTypeface(tf);
}
}
但应用程序正在崩溃:
05-09 13:42:13.525: E/AndroidRuntime(24251): FATAL EXCEPTION: main
05-09 13:42:13.525: E/AndroidRuntime(24251): Process: com.royal.bikers, PID: 24251
05-09 13:42:13.525: E/AndroidRuntime(24251): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.royal.bikers/com.royal.bikers.AboutUs}: java.lang.RuntimeException: native typeface cannot be made
05-09 13:42:13.525: E/AndroidRuntime(24251): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
05-09 13:42:13.525: E/AndroidRuntime(24251): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
05-09 13:42:13.525: E/AndroidRuntime(24251): at android.app.ActivityThread.access$800(ActivityThread.java:135)
05-09 13:42:13.525: E/AndroidRuntime(24251): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
05-09 13:42:13.525: E/AndroidRuntime(24251): at android.os.Handler.dispatchMessage(Handler.java:102)
05-09 13:42:13.525: E/AndroidRuntime(24251): at android.os.Looper.loop(Looper.java:136)
05-09 13:42:13.525: E/AndroidRuntime(24251): at android.app.ActivityThread.main(ActivityThread.java:5017)
05-09 13:42:13.525: E/AndroidRuntime(24251): at java.lang.reflect.Method.invoke(Native Method)
05-09 13:42:13.525: E/AndroidRuntime(24251): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-09 13:42:13.525: E/AndroidRuntime(24251): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-09 13:42:13.525: E/AndroidRuntime(24251): Caused by: java.lang.RuntimeException: native typeface cannot be made
05-09 13:42:13.525: E/AndroidRuntime(24251): at android.graphics.Typeface.<init>(Typeface.java:175)
05-09 13:42:13.525: E/AndroidRuntime(24251): at android.graphics.Typeface.createFromAsset(Typeface.java:149)
05-09 13:42:13.525: E/AndroidRuntime(24251): at com.royal.bikers.AboutUs.onCreate(AboutUs.java:23)
05-09 13:42:13.525: E/AndroidRuntime(24251): at android.app.Activity.performCreate(Activity.java:5231)
05-09 13:42:13.525: E/AndroidRuntime(24251): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
05-09 13:42:13.525: E/AndroidRuntime(24251): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
05-09 13:42:13.525: E/AndroidRuntime(24251): ... 9 more
05-09 13:42:13.525:E/AndroidRuntime(24251):致命异常:main
05-09 13:42:13.525:E/AndroidRuntime(24251):进程:com.royal.bikers,PID:24251
05-09 13:42:13.525:E/AndroidRuntime(24251):java.lang.RuntimeException:无法启动活动组件信息{com.royal.bikers/com.royal.bikers.AboutUs}:java.lang.RuntimeException:无法生成本机字体
05-09 13:42:13.525:E/AndroidRuntime(24251):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
05-09 13:42:13.525:E/AndroidRuntime(24251):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
05-09 13:42:13.525:E/AndroidRuntime(24251):在android.app.ActivityThread.access$800(ActivityThread.java:135)
05-09 13:42:13.525:E/AndroidRuntime(24251):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
05-09 13:42:13.525:E/AndroidRuntime(24251):位于android.os.Handler.dispatchMessage(Handler.java:102)
05-09 13:42:13.525:E/AndroidRuntime(24251):在android.os.Looper.loop(Looper.java:136)
05-09 13:42:13.525:E/AndroidRuntime(24251):位于android.app.ActivityThread.main(ActivityThread.java:5017)
05-09 13:42:13.525:E/AndroidRuntime(24251):位于java.lang.reflect.Method.invoke(本机方法)
05-09 13:42:13.525:E/AndroidRuntime(24251):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-09 13:42:13.525:E/AndroidRuntime(24251):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-09 13:42:13.525:E/AndroidRuntime(24251):原因:java.lang.RuntimeException:无法生成本机字体
05-09 13:42:13.525:E/AndroidRuntime(24251):在android.graphics.Typeface.(Typeface.java:175)
05-09 13:42:13.525:E/AndroidRuntime(24251):在android.graphics.Typeface.createFromAsset(Typeface.java:149)上
05-09 13:42:13.525:E/AndroidRuntime(24251):在com.royal.bikers.AboutUs.onCreate(AboutUs.java:23)
05-09 13:42:13.525:E/AndroidRuntime(24251):在android.app.Activity.performCreate(Activity.java:5231)上
05-09 13:42:13.525:E/AndroidRuntime(24251):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
05-09 13:42:13.525:E/AndroidRuntime(24251):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
05-09 13:42:13.525:E/AndroidRuntime(24251):。。。9更多
我曾尝试使用另一种名为的字体,效果很好,但我想将其更改为Roboto Thin,但无法使用
以下是我的AboutUs.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/aboutUs"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/ic_bg"
tools:context="com.royal.bikers.AboutUs"
tools:ignore="MergeRootFrame" >
<TextView
android:id="@+id/aboutUsTitle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="65dp"
android:gravity="center_horizontal"
android:text="@string/aboutUs"
android:textColor="#000"
android:textSize="25sp"
android:textStyle="bold" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="105dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="110dp"
android:background="#59FFFFFF" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<TextView
android:id="@+id/aboutUs1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="20dp"
android:text="@string/aboutUs1"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/aboutUs2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="30dp"
android:text="@string/aboutUs2"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/aboutUs3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="30dp"
android:text="@string/aboutUs3"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/aboutUs4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="30dp"
android:text="@string/aboutUs4"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/aboutUs5"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="50dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="10dp"
android:text="@string/aboutUs5"
android:textColor="#000"
android:textSize="20sp" />
</LinearLayout>
</ScrollView>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.royal.bikers"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="13"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.Light.NoActionBar" >
<activity
android:name="com.royal.bikers.Splash"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.royal.bikers.Home"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.Login"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.Register"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.AboutUs"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.Search"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.RegisterEvent"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.Event"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.Account"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.ChangePassword"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
</application>
</manifest>
这是清单:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/aboutUs"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/ic_bg"
tools:context="com.royal.bikers.AboutUs"
tools:ignore="MergeRootFrame" >
<TextView
android:id="@+id/aboutUsTitle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="65dp"
android:gravity="center_horizontal"
android:text="@string/aboutUs"
android:textColor="#000"
android:textSize="25sp"
android:textStyle="bold" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="105dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="110dp"
android:background="#59FFFFFF" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<TextView
android:id="@+id/aboutUs1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="20dp"
android:text="@string/aboutUs1"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/aboutUs2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="30dp"
android:text="@string/aboutUs2"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/aboutUs3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="30dp"
android:text="@string/aboutUs3"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/aboutUs4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="30dp"
android:text="@string/aboutUs4"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/aboutUs5"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="50dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="10dp"
android:text="@string/aboutUs5"
android:textColor="#000"
android:textSize="20sp" />
</LinearLayout>
</ScrollView>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.royal.bikers"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="13"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.Light.NoActionBar" >
<activity
android:name="com.royal.bikers.Splash"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.royal.bikers.Home"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.Login"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.Register"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.AboutUs"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.Search"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.RegisterEvent"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.Event"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.Account"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.royal.bikers.ChangePassword"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
</application>
</manifest>
试试这个,它会帮你的
Typeface font = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/helvetica.ttf");
ttf文件应为小写字母 好的,然后再试试这个,可能是流问题
public class Typefaces {
private static final String TAG = "Typefaces";
private static final Hashtable<String, Typeface> cache = new Hashtable<String, Typeface>();
public static Typeface get(Context c, String assetPath) {
synchronized (cache) {
if (!cache.containsKey(assetPath)) {
try {
Typeface t = Typeface.createFromAsset(c.getAssets(),
assetPath);
cache.put(assetPath, t);
} catch (Exception e) {
Log.e(TAG, "Could not get typeface '" + assetPath
+ "' because " + e.getMessage());
return null;
}
}
return cache.get(assetPath);
}
}
公共类字体{
私有静态最终字符串TAG=“Typefaces”;
私有静态最终哈希表缓存=新哈希表();
公共静态字体get(上下文c,字符串assetPath){
已同步(缓存){
如果(!cache.containsKey(assetPath)){
试一试{
Typeface t=Typeface.createFromAsset(c.getAssets(),
资产路径);
cache.put(assetPath,t);
}捕获(例外e){
Log.e(标记“无法获取字体””+assetPath
+“'因为”+e.getMessage());
返回null;
}
}
返回cache.get(assetPath);
}
}
}答案如下:删除字体字符串,只使用字体名称
Typeface tf = Typeface.createFromAsset(getAssets(),"Roboto-Thin.ttf");
定制字体加载器
public class FontLoader {
private static Typeface quickSandTypeface = null;
private static Typeface quickSandTypefaceBold = null;
public static void loadFonts(Context context) {
quickSandTypeface = Typeface.createFromAsset(context.getAssets(), "quicksand_regular.ttf");
quickSandTypefaceBold = Typeface.createFromAsset(context.getAssets(), "quicksand_bold.ttf");
}
public static Typeface getQuickSandTypeface() {
return quickSandTypeface;
}
public static Typeface getQuickSandTypefaceBold() {
return quickSandTypefaceBold;
}
public static void setQuickSandTypeface(EditText... editTextViews) {
if (null != editTextViews && null != quickSandTypeface) {
for (int i = 0; i < editTextViews.length; i++) {
editTextViews[i].setTypeface(getQuickSandTypeface());
}
}
}
公共类FontLoader{
私有静态字体quickSandTypeface=null;
私有静态字体quickSandTypefaceBold=null;
公共静态void加载字体(上下文){
quickSandTypeface=Typeface.createFromAsset(context.getAssets(),“quicksand_regular.ttf”);
quickSandTypefaceBold=Typeface.createFromAsset(context.getAssets(),“quicksand_bold.ttf”);
}
公共静态字体getQuickSandTypeface(){
返回流沙字体;
}
公共静态字体getQuickSandTypefaceBold(){
返回QuickSandTypeface粗体;
}
公共静态void setQuickSandTypeface(EditText…editTextViews){
if(null!=editTextViews&&null!=quickSandTypeface){
对于(int i=0;i
以这种方式在你的活动中使用
FontLoader.setQuickSandTypeface(yourEditText)你确定Roboto Thin.ttf
可以在你的资产
文件夹中找到吗?是的,我在那里找到了。这种方法适用于usuzi字体,但不适用于任何Roboto字体。请将名称从Roboto Thin.ttf
更改为Robototototthin.ttf
,然后尝试一下,你必须重新卸载应用程序安装应用程序查看我的答案我只是尝试将其重命名为rthin.ttf
,仍然是相同的错误。我正在使用此方法,但它使用一种字体,而不使用另一种。我尝试将字体名称从Roboto Thin.ttf
更改为rthin.ttf
,仍然是相同的问题。这不起作用,因为该资源位于字体文件夹中。只需将您的ttf文件放在资产中,而不是其他文件夹。这基本上是路径问题检查您的文件夹名称(资产、字体等)