2013-09-25 26 views
6

Gần đây tôi đã thử áp dụng một kiểu dựa trên ứng dụng Android của tôi. Tuy nhiên, tôi bị mắc kẹt với tình huống khó xử này.Làm thế nào để kế thừa thuộc tính phong cách Android?

Trong file layout của tôi, tôi ban đầu đã có này:

<LinearLayout 
     android:id="@+id/layout_event_buttons" 
     style="?android:attr/buttonBarStyle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:orientation="horizontal" > 

     <ImageButton 
      android:id="@+id/btn_create_event" 
      style="?android:attr/buttonBarButtonStyle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:contentDescription="@string/btn_save" 
      android:src="@drawable/content_save" 
      android:text="@string/btn_save" /> 
</LinearLayout> 

Trong styles.xml của tôi, tôi đã cố gắng làm điều này không có may mắn:

<style name="Buttons" parent="?android:attr/buttonBarButtonStyle"> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
</style> 

Tôi đã cố gắng biến thể khác nhau của các bên trên như:

?android:buttonBarButtonStyle

?attr:buttonBarButtonStyle

@android:attr/buttonBarButtonStyle

@android:buttonBarButtonStyle

Tôi cũng đã cố gắng:

<item name="style">?android:attr/buttonBarButtonStyle</item> 

vô ích.

Ứng dụng của tôi sẽ không biên dịch vì ứng dụng không thể tìm thấy tài nguyên buttonBarButtonStyle.

Đây là cách tôi áp dụng nó. phong cách khác của tôi hoạt động tốt nếu tôi chỉ thừa hưởng những chủ đề phổ biến như Holo vv

<ImageButton 
    style="@style/Buttons" 
    android:id="@+id/btn_create_event" 
    android:contentDescription="@string/btn_save" 
    android:src="@drawable/content_save" 
    android:text="@string/btn_save" /> 
+0

Nhân tiện, tôi có điều này trong tệp kê khai của tôi Vì vậy, tôi không nghĩ rằng tôi đang chạy nó từ một api không được hỗ trợ – Chad

Trả lời

3

Tìm thấy câu trả lời cho tương tự như bài này: How does an android:attr style work?

Hóa ra phong cách này là tư nhân và bạn có thể cần để sao chép nó hoàn toàn để có thể kéo nó ra. :(

+0

Bạn không thể có nhiều hơn một thuộc tính tùy chỉnh có cùng tên. – TheLibrarianCz

0

tôi đã tìm thấy rằng việc áp dụng android:background="?android:attr/selectableItemBackground" đến các thuộc tính nút loại bỏ các biên giới, mà làm cho nút hành động như buttonbar android (sau khi mở rộng các ?android:attr/buttonBarButtonStyle như bạn có.

This post giải thích nó cũng

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