Android есть ли способ стилизовать все виджеты? - PullRequest
0 голосов
/ 01 марта 2020

привет, ребята, я новичок в стилизации android макетов, и я хочу спросить, есть ли способ применить нарисованный фон к виджету (например, все кнопки в макете), не вводя android : рисовать в каждом виджете.

Ответы [ 2 ]

1 голос
/ 01 марта 2020

Вы можете создать расширение класса Кнопка:

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" />
0 голосов
/ 01 марта 2020

Вы можете добавить его в любой макет, но вы также можете добавить его программно, выполнив итерации каждого элемента управления на странице. Я сделал это недавно. Мне не понравился результат, потому что было невозможно (в буквальном смысле) проверить существующий стиль, чтобы увидеть, нужно ли мне его заменить - я не хотел менять стиль меток - но это было что-то вроде этого:

//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 */
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...