2012-04-07 23 views
7

Tôi có một số nút trong ứng dụng hiện tại của mình. Chúng giống hệt nhau ngoại trừ văn bản và thẻ của chúng. Tệp main.xml sẽ đẹp hơn rất nhiều nếu tôi không phải lặp lại tất cả thông tin cấu hình nút cho mỗi nút.Tôi có thể tạo mẫu nút Android không?

Có cách nào để xác định một nút làm mẫu không và sau đó sử dụng nó làm mẫu?

Trong ví dụ này, tôi có khoảng 10 trong những cách sau:

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

Nó sẽ được tốt đẹp nếu tôi có một, và sau đó 9 trong số này:

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

Nghị quyết

Nó đã được khá nhiều như @Luksprog cho biết:

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

với những điều main.xml có như thế này:

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

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

này mang ngày.

Trả lời

12

hệ một 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> 

và sau đó trong bố cục xml của bạn:

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

Bah, chỉ cần nói rằng: p. Dunno tại sao không ai đề xuất ... –

+0

+1 Vâng, tôi nghĩ rằng một cái gì đó như thế này nên tồn tại ... –

0

Bạn có thể tạo một 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"/> 

Và thiết lập các nút 10 android:background="@drawable/that_selecter"

3

Bạn có thể tạo ra một giao diện tùy chỉnh mở rộng nút và đặt tất cả những điều đó được lặp đi lặp lại. Sau đó, bạn có thể sử dụng nó như bạn mô tả, nhưng với một tên đầy đủ, không chỉ là tên ngắn.

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

Và trong XML:

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

+1 này là rất hữu ích. –

0

Cách duy nhất để làm điều này để làm cho nút tùy chỉnh subclassing nút.

Các vấn đề liên quan