2017-01-18 11 views
0

Мне нужно использовать несколько кнопок в моем проекте с различным дизайном. Поэтому я использую выталкиваемую форму для создания пользовательской кнопки.Каков эффективный и структурированный способ использования формы для Android?

Предположим, мне нужна кнопка с закругленным углом и зеленом фоне. Поэтому я создал форму «gree_round_button.xml», и это отлично работает. Но опять же мне нужна еще одна кнопка с тем же самым стилем, только цвет фона будет другим, для чего мне нужно создать другой файл xml, например «colorName_round_button.xml»?

Я держу его простым для понимания цели, но может быть много общего стиля для разных кнопок может быть только одним или двумя свойствами. Есть ли способ, которым я могу пропустить создание нескольких файлов для того же дизайна? Есть ли способ, который я могу использовать для расширения любой формы и может быть цветом пропуска, цветом фона в качестве параметра? Может быть, это «button.xml», эта форма примет один параметр для цвета, и я могу использовать эту форму для каждой кнопки, которую я хочу использовать, и просто передаю другой цвет в качестве параметра.

В веб-Css: Я могу сделать что-то вроде этого

.button {border: 1px solid #ddd;border-radius:5px;padding:20px;} 
.button.green {background:green;} 

Есть ли простой способ сделать что-то вроде этого. Спасибо.

+0

Вы можете 'продлить View' и передавать любые параметры цвета вы хотите. –

+0

Я обязательно проверю это. Спасибо –

ответ

2

Вы должны взглянуть на backgroundTint. Это позволит вам использовать один и тот же drawable, но наложить его на разные цвета.

Так, например, у вас может быть bg_circle.xml, который представляет собой белый круг. Затем используйте оттенок, чтобы изменить его цвет, и укажите свой отдельный значок как src.

<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_check_mark" 
    android:background="@drawable/bg_circle" 
    android:backgroundTint="@color/red" 
    /> 

Таким образом, вам нужно только иметь один round_button.xml, которые вы можете использовать в качестве фона для всех кнопок, и подкрасить его с разными цветами, как это необходимо. Затем содержимое каждого значка может быть собственным.

Четыре кнопки ниже были сделаны только 3: вводимого коэффициента

enter image description here

<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_feather" 
    android:background="@android:drawable/btn_default" 
    /> 

<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_feather" 
    android:background="@android:drawable/btn_default" 
    android:backgroundTint="@color/colorPrimaryDark" 
    /> 

<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_plane" 
    android:background="@android:drawable/btn_default" 
    android:backgroundTint="@color/colorPrimaryDark" 
    /> 
<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_plane" 
    android:background="@android:drawable/btn_default" 
    android:backgroundTint="@color/colorAccent" 
    /> 
+0

Большое спасибо за отличное объяснение. Просто отметили его правильный ответ :) –