2013-06-19 37 views
5

Tôi đang cố gắng thay đổi tất cả các nút TextColor trong các ứng dụng của tôi thành màu trắng và cũng cố gắng làm cho nó đậm. Nhưng điều đó không xảy ra, tôi ghi đè the android:Widget.Button Tôi đang phát triển cho Jelly Bean 4.1.2 Tôi đang làm gì sai?Thay đổi kiểu nút trong toàn bộ ứng dụng

nét Theme trong manifest

android:theme="@style/spui" > 

Các chủ đề mà tôi muốn

<style name="spui" parent="android:Theme.Holo.Light.DarkActionBar"> 
    <item name="android:buttonStyle">@style/Buttonspui</item> 
</style> 

Phong cách cho nút tự

<style name="Buttonspui" parent="android:Widget.Button"> 
     <item name="android:background">@drawable/btn_default_holo_light</item> 
     <item name="android:minHeight">48dip</item> 
     <item name="android:minWidth">64dip</item> 
     <item name="android:textColor">#ffffff</item> 
     <item name="android:textStyle">bold</item> 
    </style> 

Nút

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="15dp" 
    android:text="@string/edit" 
    android:id="@+id/btnEdit" 
    style="@style/Buttonspui"/> 
+0

Cố gắng áp dụng phong cách đó để mỗi Nút. sẽ hoạt động. – SKK

+0

nếu bạn đang áp dụng chủ đề này trong ứng dụng, hãy đảm bảo bạn không áp dụng chủ đề khác cho hoạt động hoặc nút đó. –

+0

Nút chính nó không có kiểu khác – mXX

Trả lời

15

Đối với phong cách của bạn Button bạn có thể sử dụng này:

Chuyển đến thư mục drawable và tạo một XML (ví dụ button.xml) tập tin gọi là "phong cách", trong đó có những điều sau đây:

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item> 
     <shape> 
      <gradient android:startColor="#449def" android:endColor="#2f6699" android:angle="270" /> 
      <stroke android:width="1px"   android:color="#000000" /> 
       <corners android:bottomLeftRadius="0dp" 
       android:bottomRightRadius="0dp" 
       android:topLeftRadius="8dp" 
       android:topRightRadius="8dp"/>  
       <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> 
     </shape> 
    </item> 

</selector> 

Đây là mã của tôi, bạn có thể thực hiện những thay đổi cần thiết mà bạn muốn

Bây giờ gọi nó trong XML layout của bạn (mainactivity.xml) như

này
android:background="@drawable/button.xml" 

Bây giờ để thay đổi màu chữ và phong cách bạn có thể sử dụng những điều sau đây mà đi kèm như một phần của styles.xml trong thư mục giá trị

<style name="buttonStyle" parent="@android:style/Widget.Button.Small"> 
    <item name="android:textColor">#FFFFFF</item> 
    <item name="android:textSize">12sp</item> 
    <item name="android:textStyle">bold</item> 
</style> 

Bây giờ gọi này trong XML layout (mainactivity.xml) như

style="@style/buttonStyle" 

Mã cuối cùng này là:

<Button 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_marginTop="15dp" 
android:text="@string/edit" 
android:id="@+id/btnEdit" 
android:background="@drawable/button.xml" 
style="@style/buttonStyle" 
/> 

Hope this helps :)

+0

Đây là câu trả lời đúng . Nhưng vẫn không thể tin rằng Google đã không cung cấp một cách nhất quán hơn để làm cho một chủ đề toàn cầu cho nút. Về mặt ngữ nghĩa, điều này là sai. Chúng tôi phải chỉ định nền và kiểu theo cách thủ công thay vì cho phép chúng tôi sửa đổi chủ đề mặc định. – Juanjo

+0

Tôi đã thử điều này, mọi thứ hoạt động ngoại trừ textColor. Nó không kế thừa màu trắng nhưng hiển thị màu đen. Tất cả những người khác được thừa kế một cách chính xác từ phong cách và nền. Nếu tôi đặt cùng một thuộc tính rõ ràng trên nút thể hiện, nó hoạt động. Kỳ dị. –

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