2012-12-28 46 views
19

Để tạo một ToggleButton tùy chỉnh, tôi đã xác định một phong cách mới trong /res/values/styles.xml:Android: chuyển đổi màu sắc văn bản của ToggleButton

<style name="myToggleButton"> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:textColor">#000000</item> 
    <item name="android:background">@drawable/my_toggle_button</item> 
</style> 

và sau đó tôi sử dụng một bộ chọn để chỉ định cách tiểu bang của nút tìm trong /res/drawable/my_toggle_button.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true"> 
     <shape> 
      [...] 
     </shape> 
    </item> 
    <item android:state_checked="false" 
     <shape> 
      [...] 
     </shape> 
    </item> 
</selector> 

Làm cách nào để sửa đổi thiết lập này để chuyển đổi màu văn bản của nút khi trạng thái thay đổi?

+0

trong phạm vi hình dạng, cho các thước màu màu bạn muốn và xóa nền trong style.xml. – Tugrul

+0

Tôi nghĩ rằng liên kết này hữu ích cho vấn đề của bạn: http://stackoverflow.com/questions/7096599/how-to-change-the-text-color-of-an-android-tooglebutton-on-state-change – secretlm

+0

Dựa về thử nghiệm với tự động hoàn thành trong Eclipse, liên kết đó không cung cấp cú pháp hợp lệ. Cách duy nhất để xác định màu là '' trong phạm vi ''. Tuy nhiên, nó không thay đổi màu chữ. –

Trả lời

61

Tạo danh sách trạng thái tương tự cho màu văn bản bạn muốn và đặt nó vào res/color, ví dụ:

res/color/toggle_color.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true" android:color="#070" /> 
    <!-- Default State --> 
    <item android:color="#A00" /> 
</selector> 

Sau đó thiết lập tài nguyên này như màu sắc văn bản của nút:

<item name="android:textColor">@color/toggle_color</item> 

PS, đó là thực hành tốt để có mục cuối cùng trong một selector không có bất kỳ cờ nhà nước trực thuộc (tức là trạng thái mặc định) thay vì xác định nó bằng nghịch đảo của các trạng thái trên.

+1

Hoàn hảo, cảm ơn! –

+2

câu trả lời rất hữu ích - nhưng tôi thấy nó không chạy chỉ vì các ký tự chữ hoa không được phép trong tên tệp (ít nhất là phiên bản API 18) - được chỉnh sửa :) – davnicwil

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