1

可能重复:
如何以编程方式更改整个应用程序中的字体大小,Android?

这是我的代码:我创建了带有 FontSize 选项列表的 Spinner。如果我单击 FontSize“26”,那么它应该能够更改特定的 FontSize。下面我有一个编辑框。因此,如果我单击字体大小为 40 并且使用比通常粗体的斜体样式。所以我应该能够使用这个选定的“字体”在 EditBox 内输入:FontSize“40”和斜体样式。

我如何在 Android 中以编程方式执行此操作?

font=new Spinner(con);
option= new String[] {"Select Font Size","8","10","12","14","16","18","20",
                      "22","24","26","28","30","32","34","36","38","40","50"};
ArrayAdapter<String> adapter= new ArrayAdapter<String>(con,android.R.layout.simple_spinner_dropdown_item,option);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

font.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1,int position, long id) {
        option[1]="8";
       selectedItem= option[position];
    }
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
    }
});
4

3 回答 3

4

改变

textSize 使用editText.setTextSize(20)

字体和样式使用editText.setTypeface(yourTypeFace, Typeface.BOLD)

更新

public class MyEditText extends EditText{

public MyEditText(Context context) {
    super(context);
    init();
}

public MyEditText(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
}
public MyEditText(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}
void init() {
   this.setTextSize(20);
   this.setTypeface(yourTypeFace, Typeface.BOLD);
}

// method to change font settings
void setFont(TypeFace tf){
   this.setTypeFace(tf);
}
//add whatever method you want
}

然后不要使用EditText你使用这个类,并且不要忘记在你的 XML 中使用

<yourpackage.MyEditText
     android:layout_height=".."
     android:layout_width=".."
     ... />
于 2012-10-03T10:09:03.313 回答
0

可能的解决方案是您创建一个扩展 TextView 的基类,并将此文本视图类用作编辑文本。希望您在第一个屏幕上询问尺寸。在任何情况下,您都可以在基类中设置文本大小。这将解决您的问题。

就像你在包 com.example 中创建这个类,类名是 BaseTextView,然后在 xml 文件中而不是你会写

希望这可以帮助。

于 2012-10-03T10:15:20.907 回答
0

首先获取EditBox的id。然后选择项目的位置。据此,您可以制作这样的公式:

public void onItemSelected(AdapterView<?> arg0, View arg1,int position, long id) {
    int p=(8+(pos*2));

    editText.setTextSize(p);
}
于 2012-10-03T10:38:46.100 回答