7

Вопрос по android – Могу ли я сделать шаблон кнопки Android?

У меня есть несколько кнопок в моем текущем приложении. Все они идентичны, за исключением их текста и тега. Файл main.xml был бы намного лучше, если бы мне не пришлось повторять всю информацию о конфигурации кнопок для каждой кнопки.

Есть ли способ определить кнопку как шаблон, а затем сделать больше, используя ее в качестве шаблона?

В этом примере у меня есть около 10 из следующих:

 <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="Y"
            android:typeface="monospace"
            android:textSize="12pt"
            android:tag="Y"
            android:textColor="@color/button_text"
            android:background="@drawable/grey_blank_48x48"
            android:onClick="onButtonClicked"/>

Было бы хорошо, если бы у меня был один, а затем 9 из них:

 <Button2
            android:text="N"
            android:tag="N"/>

Resolution

Это было почти так, как сказал @Luksprog:

<style name="ASR33_button" >
    <item name="android:id">@+id/button</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:padding">10dp</item>
    <item name="android:textColor">@color/button_text</item>
    <item name="android:background">@drawable/grey_blank_48x48</item>
    <item name="android:onClick">onButtonClicked</item>
    <item name="android:typeface">monospace</item>
    <item name="android:textSize">12pt</item>
</style>

с main.xml, имеющим такие вещи:

   <Button
            style="@style/ASR33_button"
            android:tag="Y"
            android:text="Y"
            />

   <Button
            style="@style/ASR33_button"
            android:tag="N"
            android:text="N"
            />

Это несет день.

  • +1 это очень полезно.

    от Tony Ennis
  • +1 Ну, я скорее думал, что-то подобное должно существовать ...

    от Tony Ennis
  • Бах, просто собираюсь сказать, что: р. Не знаю, почему никто не предложил ...

    от
  • 12

    Соединенные Штаты Америки

    style:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="btnlook" >
            <item name="android:id">@+id/button</item>
            <item name="android:layout_width">wrap_content</item>
            <item name="android:layout_height">wrap_content</item>
            <item name="android:padding">10dp</item>
            <item name="android:textColor">@color/button_text</item>
            <item name="android:background">@drawable/grey_blank_48x48</item>
            <item name="android:onClick">onButtonClicked</item>
            <item name="android:typeface">monospace</item>
            <item name="android:textSize">12pt</item>
        </style>
    </resources>
    

    а затем в вашем макете XML:

    <Button
                style="@style/btnlook"
                android:text="N"
                android:tag="N"/>
    

  • 0

    Вы можете создать

    selector

    <?xml version="1.0" encoding="UTF-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
         android:shape="rectangle">
        <solid android:color="#AAFFFFFF"/>
        <corners android:bottomRightRadius="7dp"
            android:bottomLeftRadius="7dp" 
            android:topLeftRadius="7dp"
            android:topRightRadius="7dp"/>
    

    И установите кнопку 10android:background="@drawable/that_selecter"

  • 0

    Единственный способ сделать это

    чтобы сделать пользовательскую кнопку подклассом кнопки.

  • 3

    Вы можете сделать пользовательский вид

    который расширяет кнопку и устанавливает все вещи, которые повторяются. Затем вы можете использовать его, как вы описали, но с полным именем, а не просто коротким именем.

    class MyButton extends Button {
        public MyButton() {
            // Set the values you want
        }
    }
    

    И в XML:

    <com.me.myapp.MyButton
        android:text="N"
        android:tag="N" />