Android是否可以设置所有小部件的样式?

时间:2020-03-01 00:59:15

标签: android android-studio

大家好,我是android样式设计的新手,我想问一下是否有一种方法可以将可绘制背景应用于小部件(例如:布局中的所有按钮),而不必在每个小窗口中键入android:drawable小部件。

2 个答案:

答案 0 :(得分:1)

您可以创建类扩展按钮:

public class CustomButton extends Button {

    public CustomButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        //set drawable here
    }

}

并在xml文件中调用CustomButton:

        <yourpackage.name.CustomButton 
        android:id="@+id/xxx"
        android:text="CustomButton" />

答案 1 :(得分:0)

您可以在每个布局中添加它,但是也可以通过迭代页面上的每个控件以编程方式添加它。我最近做了这个。我不喜欢这个结果,因为(从字面上看)不可能检查现有样式以查看是否需要替换它-我不想重新设置标签的样式-但这是这样的:

//change linerlayout to whatever viewgroup type you have
LinearLayout layout = (LinearLayout) findViewById(R.id.name_of_your_linearlayout);
for(int count = 0; count < layout.getChildCount(); count ++) {
    if (layout.getChildAt(count)) instanceOf EditText) {
       /*do your work here.  Note you don't have to limit yourself
         to theming.  You could add an event to every button or textbox
         at the same time */
    }
}