我以编程方式添加线性布局和多个文本视图,并将自定义字体设置为文本,
我以下面的方式做到了,而且效果很好。
主要活动 1:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout);
TextView tv = new TextView(this);
tv.setGravity(Gravity.RIGHT);
tv.setTextColor(Color.GREEN);
tv.setTextSize(40);
ll.addView(tv);
Typeface face4=Typeface.createFromAsset(getAssets(),"BFantezy.ttf");
tv.setTypeface(face4);
tv.setText(Html.fromHtml(getString(R.string.trip)));
ImageView divider = new ImageView(this);
LinearLayout.LayoutParams lp =
new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 5);
lp.setMargins(10, 10, 10, 10);
divider.setLayoutParams(lp);
divider.setBackgroundColor(Color.BLUE);
ll.addView(divider);
TextView tv1 = new TextView(this);
tv1.setGravity(Gravity.RIGHT);
tv1.setTextSize(40);
ll.addView(tv1);
Typeface face1=Typeface.createFromAsset(getAssets(),"BFantezy.ttf");
tv1.setTypeface(face1);
tv1.setText(Html.fromHtml(getString(R.string.trip1)));
ImageView divider1 = new ImageView(this);
LinearLayout.LayoutParams lp1 =
new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 5);
lp1.setMargins(10, 10, 10, 10);
divider1.setLayoutParams(lp1);
divider1.setBackgroundColor(Color.BLUE);
ll.addView(divider1);
TextView tv2 = new TextView(this);
tv2.setGravity(Gravity.RIGHT);
tv2.setTextSize(40);
ll.addView(tv2);
Typeface face2=Typeface.createFromAsset(getAssets(),"BFantezy.ttf");
tv2.setTypeface(face2);
tv2.setText(Html.fromHtml(getString(R.string.trip2)));
ImageView divider3 = new ImageView(this);
LinearLayout.LayoutParams lp3 =
new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 5);
lp3.setMargins(10, 10, 10, 10);
divider3.setLayoutParams(lp3);
divider3.setBackgroundColor(Color.BLUE);
ll.addView(divider3);
}
}
但回想起来
Typeface.createFromAsset(getAssets()
对于每个文本,它是应用自定义字体的一种繁重方式,我尝试将自定义视图设置为波纹管,但它没有将自定义字体设置为文本:
主要活动:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout);
// add text view
TextView tv = new TextView(this);
tv.setGravity(Gravity.RIGHT);
tv.setTextColor(Color.GREEN);
tv.setTextSize(40);
ll.addView(tv);
tv.setText(Html.fromHtml(getString(R.string.trip)));
ImageView divider = new ImageView(this);
LinearLayout.LayoutParams lp =
new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 5);
lp.setMargins(10, 10, 10, 10);
divider.setLayoutParams(lp);
divider.setBackgroundColor(Color.BLUE);
ll.addView(divider);
TextView tv1 = new TextView(this);
tv1.setGravity(Gravity.RIGHT);
tv1.setTextSize(40);
ll.addView(tv1);
tv1.setText(Html.fromHtml(getString(R.string.trip1)));
ImageView divider1 = new ImageView(this);
LinearLayout.LayoutParams lp1 =
new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 5);
lp1.setMargins(10, 10, 10, 10);
divider1.setLayoutParams(lp1);
divider1.setBackgroundColor(Color.BLUE);
ll.addView(divider1);
TextView tv2 = new TextView(this);
tv2.setGravity(Gravity.RIGHT);
tv2.setTextSize(40);
ll.addView(tv2);
tv2.setText(Html.fromHtml(getString(R.string.trip2)));
ImageView divider3 = new ImageView(this);
LinearLayout.LayoutParams lp3 =
new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 5);
lp3.setMargins(10, 10, 10, 10);
divider3.setLayoutParams(lp3);
divider3.setBackgroundColor(Color.BLUE);
ll.addView(divider3);
}}
自定义文本视图:
public class CustomTextView extends TextView {
public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public CustomTextView(Context context, AttributeSet attrs) {
//call the constructor which has the complete definition
this(context, attrs, 0);
init();
}
public CustomTextView(Context context) {
super(context);
init();
}
private void init() {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "BFantezy.ttf");
setTypeface(tf);
}
}
任何帮助将不胜感激,谢谢。