我的设计:

看看下面的android代码:
final ArrayList<String> arrayFont = new ArrayList<String>();
arrayFont.add("Arial");
arrayFont.add("Segoeui");
arrayFont.add("Tahoma");
arrayFont.add("Times New Roman");
ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,arrayFont);
sp.setAdapter(arrayAdapter);
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if(position == 0){
Typeface type = Typeface.createFromAsset(getAssets(),"fonts/arial.ttf");
txtkq.setTypeface(type);
}
if(position == 1){
Typeface type = Typeface.createFromAsset(getAssets(),"fonts/segoeui.ttf");
txtkq.setTypeface(type);
}
if(position == 2){
Typeface type = Typeface.createFromAsset(getAssets(),"fonts/tahoma.ttf");
txtkq.setTypeface(type);
}
if(position == 3){
Typeface type = Typeface.createFromAsset(getAssets(),"fonts/times.ttf");
txtkq.setTypeface(type);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
protected void Checked(View v){
if(cb_Bold.isChecked() && cb_Italic.isChecked() == false) {
Typeface bold_Typeface = Typeface.defaultFromStyle(Typeface.BOLD);
txtkq.setTypeface(bold_Typeface);
}else
if(cb_Italic.isChecked() && cb_Bold.isChecked() == false){
Typeface Italic_Typeface = Typeface.defaultFromStyle(Typeface.ITALIC);
txtkq.setTypeface(Italic_Typeface);
} else
if(cb_Bold.isChecked() && cb_Italic.isChecked()){
Typeface bold_Italic_Typeface = Typeface.defaultFromStyle(Typeface.BOLD_ITALIC);
txtkq.setTypeface(bold_Italic_Typeface);
}else
if(cb_Bold.isChecked() == false && cb_Italic.isChecked() == false){
Typeface bold_Italic_Typeface = Typeface.defaultFromStyle(Typeface.NORMAL);
txtkq.setTypeface(bold_Italic_Typeface);
}
}当我单击“更改字体”时,它是工作的,然后单击“将字体样式更改为Bold”或“意大利语”,它将返回到默认字体:(在onCreate中用旋转器更改字体,在onCreate之外用复选框更改字体样式。选中的是XML中复选框的onClick事件。
发布于 2017-11-22 13:08:17
这是因为您选择字体或字体的每一个类型,您都在视图中添加新类型的面板。试试下面的代码
textview.setTypeface(textview.getTypeface(), Typeface.BOLD);当您正在更改文本样式时,还可以获得文本视图的当前类型,并使用新类型face传递。希望这能回答问题。
发布于 2017-11-22 13:21:59
请试试这个..。
protected void Checked(View v){
CheckBox checkBox = (CheckBox)v;
if(checkBox.isChecked()) {
Typeface bold_Typeface = Typeface.defaultFromStyle(Typeface.BOLD);
editText.setTypeface(bold_Typeface);
} else {
Typeface bold_Italic_Typeface = Typeface.defaultFromStyle(Typeface.NORMAL);
editText.setTypeface(bold_Italic_Typeface);
}
}发布于 2017-11-22 13:33:09
请参见setTypeface方法的定义。如果您没有传递字体(字体),它会将默认的字体应用于它。风格基本上是你想要的textStyle,比如粗体,斜体。因此,在设置您的样式时,您也应该按照上面的建议传递您的字体。
public void setTypeface(Typeface tf, int style) {
if (style > 0) {
if (tf == null) {
tf = Typeface.defaultFromStyle(style);
} else {
tf = Typeface.create(tf, style);
}
}所以你应该试试下面的代码:
Typeface ft=textview.getTypeface();
textview.setTypeface(ft, Typeface.BOLD);https://stackoverflow.com/questions/47435084
复制相似问题