2011-08-23 18 views
8

Tôi muốn mở rộng kiểu nút nhỏ của Android. Tôi có thể làm điều đó nội tuyến:Trong Android XML, tôi có thể đặt buttonStyleSmall hoặc Button.Small làm kiểu gốc thành kiểu tùy chỉnh không?

<Button android:id="@+id/myButton" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_alignParentRight="true" 
     android:layout_gravity="right" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:textSize="10dp" 
     android:text="Click Here"/> 

Nhưng vì lợi ích của việc sử dụng lại, tôi muốn chuyển các kiểu này sang kiểu tùy chỉnh. Làm cách nào để thêm buttonStyleSmall (hoặc Widget.Button.Small?) Làm phụ huynh cho một kiểu? Một cái gì đó như thế này trong phong cách tùy chỉnh XML của tôi:

<style name="RightLink" parent="?android:attr/buttonStyleSmall"> 
    <item name="android:layout_alignParentRight">true</item> 
    <item name="android:layout_gravity">right</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:paddingLeft">2dp</item> 
    <item name="android:paddingRight">2dp</item> 
    <item name="android:textSize">10dp</item> 
</style> 

với việc kê khai nút sử dụng mà phong cách:

<Button android:id="@+id/myButton" 
     style="@style/RightLink" 
     android:text="Click Here"/> 

EDIT

Sử dụng cú pháp đúng như mô tả của Lukas dưới đây (sử dụng @android:attr/buttonStyleSmall với tư cách là phụ huynh), tôi vẫn thấy sự khác biệt giữa hai:

Nút có nútSty leSmall như phong cách và phong cách inline thêm:

pic1

Tuỳ chỉnh phong cách với buttonStyleSmall như phụ huynh:

pic2

tôi thiếu gì?

+0

Xin chào, giải pháp toàn bộ cho điều này là gì? Bạn có thể gửi mã đầy đủ không? – Emerald214

Trả lời

15

Vì vậy, bạn hãy thử inherit style informations từ kiểu Android chuẩn. Đối với điều này, bạn sẽ cần sử dụng thuộc tính parent như bạn đã làm.

Ngoại lệ duy nhất khi kế thừa một phong cách giữa các ý kiến, rằng bạn phải sử dụng một @ không phải là một ?:

<style name="RightLink" parent="@android:attr/buttonStyleSmall"> 

thêm một chút về làm thế nào để làm điều đó cho phong cách nền tảng (vì khác với phong cách bạn tự tạo) có thể được tìm thấy here.


Sau khi chơi đùa với nó tôi thấy rằng cách bạn inhirate là đúng, nhưng tin tưởng là sai:

<style name="RightLink" parent="@android:style/Widget.Button.Small"> 

này hoạt động.

Sự khác biệt của đường nối là hằng số nguyên được sử dụng để thêm số này bằng cách sử dụng thuộc tính style và thuộc tính được khai báo trong Android R-class trong lớp học attr.

Định nghĩa kiểu XML (mà từ đó bạn thực sự có thể kế thừa) được lưu trữ trong lớp style - lớp con của lớp R. Vì vậy, dòng trên nên giải quyết vấn đề của bạn.

+0

tuyệt vời tuyệt vời tuyệt vời ..... tôi ước tôi có thể bỏ phiếu nó triệu lần. cảm ơn cảm ơn – user4o01

+1

vì vậy tôi đang bối rối, là