我正在尝试更改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
...
答案 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。您可以添加任意数量的