如何在多个ImageButton中使用相同的配置而不会一次又一次地粘贴相同的属性?

时间:2016-12-27 11:00:38

标签: android android-layout

我正在为Android应用程序设计一些布局并使用多个按钮。所有按钮都具有相似的属性。无论如何它在某些不同的文件中保留类似的属性并参考布局。

例如:

下面的代码有多个属性。所有按钮都具有类似的值,不包括按钮ID和图标。有没有更好的方法可以避免一次又一次地重新定义?

<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>

2 个答案:

答案 0 :(得分: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 :(得分:1)

只需为按钮定义不同的样式,然后再应用。 这个article应该会有所帮助。

values / 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" />