2016-12-27 2 views
0

Я разрабатываю макет приложения для Android и используя несколько кнопок. все кнопки имеют похожие атрибуты. Он там все равно сохраняет аналогичный атрибут в каком-то другом файле и ссылается на макет.Как использовать ту же конфигурацию для нескольких ImageButton без копирования, вставляя одинаковые атрибуты снова и снова?

Например:

Ниже код, имеющий несколько атрибутов. Все имеют одинаковые значения на всех кнопках, исключая идентификатор кнопки и значок. Есть ли лучший способ избежать переопределения снова и снова?

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:id="@+id/search_linear_layout" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:layout_margin="16dp" 
     > 


     <ImageButton 
      android:layout_width="84dp" 
      android:layout_height="78dp" 
      app:srcCompat="@mipmap/ic_schedule_black_48dp" 
      android:background="@drawable/button_shape" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:tint="@color/colorAccent" 
      android:id="@+id/imageButton1" /> 
     <ImageButton 
      android:layout_width="84dp" 
      android:layout_height="78dp" 
      app:srcCompat="@mipmap/ic_brightness_4_black_48dp" 
      android:background="@drawable/button_shape" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:tint="@color/colorAccent" 
      android:id="@+id/imageButton2" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:tint="@color/colorAccent" 
     android:layout_below="@id/search_linear_layout" 
     android:layout_margin="16dp" 
     > 
     <ImageButton 
      android:layout_width="84dp" 
      android:layout_height="78dp" 
      app:srcCompat="@mipmap/ic_brightness_4_black_48dp" 
      android:background="@drawable/button_shape" 
      android:layout_gravity="center" 
      android:tint="@color/colorAccent" 
      android:layout_weight="1" 
      android:id="@+id/imageButton3" /> 
     <ImageButton 
      android:layout_width="84dp" 
      android:layout_height="78dp" 
      app:srcCompat="@mipmap/ic_local_hotel_black_48dp" 
      android:background="@drawable/button_shape" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:tint="@color/colorAccent" 
      android:id="@+id/imageButton4" /> 
    </LinearLayout> 
+0

Создать стиль в 'styles.xml' используя общие атрибуты и применить этот стиль к «ImageButton». –

ответ

0

Просто определите различные стили для своих кнопок и примените их после этого. Это article должно быть полезно.

значения/styles.xml:

<style name="MyCustomStyle" parent="Base.Widget.AppCompat.ImageButton"> 
    <item name="android:src">@drawable/whatever</item> 
</style> 

Ваш ImageButton внутри файла макета:

<ImageButton 
     android:layout_width="84dp" 
     android:layout_height="78dp" 
     style="@style/MyCustomStyle" 
     android:background="@drawable/button_shape" 
     android:layout_gravity="center" 
     android:layout_weight="1" 
     android:tint="@color/colorAccent" 
     android:id="@+id/imageButton4" /> 
1

Да, пожалуйста, сделайте отдельный .xml-файл для одной кнопки. и укажите этот файл, в котором вы хотите использовать.

Например, my_button.xml

<ImageButton 
     android:layout_width="84dp" 
     android:layout_height="78dp" 
     app:srcCompat="@mipmap/ic_brightness_4_black_48dp" 
     android:background="@drawable/button_shape" 
     android:layout_gravity="center" 
     android:tint="@color/colorAccent" 
     android:layout_weight="1" 
     android:id="@+id/imageButton3" /> 

Теперь называют этот макет в вашем требуется .xml

Например, activity_main

<include 
    android:id="@+id/btn1" 
    layout="@layout/my_button"> 

</include> 

Наслаждайтесь!

+1

Спасибо, суровый, это помогло мне. –

+0

Но вот одна небольшая проблема у меня есть. Как я хочу изменить значок и идентификатор для каждой кнопки. –

+0

Я понял. Используя стиль, я могу достичь этого. Спасибо за ваше предложение. Это помогло мне. –

Смежные вопросы