使用字体更改按钮文本字体

时间:2015-12-08 18:10:58

标签: java android

我正在尝试更改onCreate()方法中所有按钮的字体 有办法做到这一点?

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Typeface buttontypeface = Typeface.createFromAsset(getAssets(),"Calculator.ttf");
    // get just buttons ids
}

如果我使用findViewById我将获得单个按钮的ID,我想快速获取所有按钮ID然后更改其字体。 我有:button1, button_a, buttonout ...

4 个答案:

答案 0 :(得分:0)

它可能对你有帮助!

    Button button= (Button) findViewById(R.id.button1);
    Typeface face8 = Typeface.createFromAsset(getApplicationContext().getAssets(), "MyFont.ttf");
    button.setTypeface(face8);

答案 1 :(得分:0)

这个问题:Set font for all textViews in activity?显示了如何为TextView实现此目标。

如果您想对按钮执行相同操作,请使用以下代码:

private void overrideFonts(final Context context, final View v) {
try {
    if (v instanceof ViewGroup) {
        ViewGroup vg = (ViewGroup) v;
        for (int i = 0; i < vg.getChildCount(); i++) {
            View child = vg.getChildAt(i);
            overrideFonts(context, child);
     }
    } else if (v instanceof Button ) {
        ((Button) v).setTypeface(Typeface.createFromAsset(context.getAssets(), "font.ttf"));
    }
} catch (Exception e) {
}
}

所有学分都转到Agarwal Shankar获取此代码

至于参数:对于context您可能想要使用this而对于v您要使用父View,这通常是Layout LinearLayout 1}}属性(BuildAction或您正在使用的任何内容)

答案 2 :(得分:0)

首先获取布局中的所有按钮,然后更改每个人的字体,让我们说viewGroup是你的根视图(可能是RelativeLayout,LinearLayout等......)。

int count = viewGroup.getChildCount();
      for (int i = 0; i< count; i++){
          if(viewGroup.getChildAt(i) instanceof Button){
              //do whatever you want here
          }
      }

您可以通过在xml文件中为其提供if来获取根视图。

答案 3 :(得分:0)

你可以制作一个像这样的简单方法

private void typefaces(int... args){
    Typeface buttontypeface = Typeface.createFromAsset(getAssets(), "Calculator.ttf");
    for(int i = 0; i < args.length; i++){
        ((Button) findViewById(args[i])).setTypeface(buttontypeface);
    }
}

然后在onCreate

中调用它
typefaces(R.id.button, R.id.button1, R.id.button2, R.id.button3);

其中R.id.button, R.id.button1, R.id.button2, R.id.button3是来自4个按钮的ID。您可以添加任意数量的