我的一个应用活动包括许多textview,我想为该textview设置多个自定义字体,
我尝试了以下代码,但它无法自定义textview,
任何帮助将不胜感激
public class Text extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv2=(TextView)findViewById(R.id.text2);
tv2.setText(Html.fromHtml(getString(R.string.text_2)));
TextView tv3=(TextView)findViewById(R.id.text3);
tv3.setText(Html.fromHtml(getString(R.string.text_3)));
TextView tv4=(TextView)findViewById(R.id.text4);
tv4.setText(Html.fromHtml(getString(R.string.text_4)));
TextView tv5=(TextView)findViewById(R.id.text5);
tv5.setText(Html.fromHtml(getString(R.string.text_5)));
}
class MyTextView extends TextView {
private String TextView;
public MyTextView(Context context,int string) {
super(context );
}
public MyTextView(Context context) {
super(context);
}
public void setTypeface(Typeface tf, int string) {
if (TextView == "tv2,tv4") {
super.setTypeface(Typeface.createFromAsset(getContext().getAssets(),
"BFantezy.ttf"));
}
else if (TextView == "tv3,tv5") {
super.setTypeface(Typeface.createFromAsset(getContext().getAssets(),
"RoseNewB.ttf"));
}
}
}
}
main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/text2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="25sp"/>
<View
android:layout_width="fill_parent"
android:layout_height="2dp"/>
<TextView
android:id="@+id/text3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="25sp"/>
<View
android:layout_width="fill_parent"
android:layout_height="2dp"/>
<TextView
android:id="@+id/text4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="25sp"/>
<View
android:layout_width="fill_parent"
android:layout_height="2dp"/>
<TextView
android:id="@+id/text5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="25sp"/>
</LinearLayout>
</ScrollView>
答案 0 :(得分:0)
你正在以错误的方式比较它。改为
if (getId() == R.id.text2)
super.setTypeface(Typeface.createFromAsset(getContext().getAssets(),
"BFantezy.ttf"));
使用MyTextView创建textView。
并且像这样比较所有。
答案 1 :(得分:0)
每次设置时都会创建相同的字体。
super.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "BFantezy.ttf"));
只需创建一次并反复使用它。 这个电话很重,40次这样做肯定会增加加载时间。
public class Text extends Activity {
/** Called when the activity is first created. */
private Static Typeface bf = Typeface.createFromAsset(getContext().getAssets(),
"BFantezy.ttf");
private Static Typeface rn = Typeface.createFromAsset(getContext().getAssets(),
"RoseNewB.ttf")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv2=(TextView)findViewById(R.id.text2);
tv2.setText(Html.fromHtml(getString(R.string.text_2)));
tv2.setTypeface(bf);
TextView tv3=(TextView)findViewById(R.id.text3);
tv3.setText(Html.fromHtml(getString(R.string.text_3)));
tv3.setTypeface(rn);
TextView tv4=(TextView)findViewById(R.id.text4);
tv4.setText(Html.fromHtml(getString(R.string.text_4)));
tv4.setTypeface(bf);
TextView tv5=(TextView)findViewById(R.id.text5);
tv5.setText(Html.fromHtml(getString(R.string.text_5)));}
tv5.setTypeface(rn);
...
自定义TextView就是一种矫枉过正的目的。您可以删除以下代码。
class MyTextView extends TextView {
private String TextView;
private Static Typeface bf = Typeface.createFromAsset(getContext().getAssets(),
"BFantezy.ttf");
private Static Typeface rn = Typeface.createFromAsset(getContext().getAssets(),
"RoseNewB.ttf")
public MyTextView(Context context,int string) {
super(context);
updateTypeface();
}
public MyTextView(Context context) {
super(context);
updateTypeface();
}
private void updateTypeface() {
if (getId() == R.id.text2 || getId() == R.id.text4) {
super.setTypeface(bf);
}
else if (getId() == R.id.text3 || getId() == R.id.text5) {
super.setTypeface(rn);
}
}
}
编辑:更新了代码。自动更新字体。