2013-09-06 27 views
6

Tôi gặp sự cố khi tùy chỉnh giao diện của tiện ích Chuyển đổi Android. Tôi có drawables xml tùy chỉnh mà tôi muốn sử dụng cho ngón tay cái (phần nút nhỏ thường nói On hoặc Off) và theo dõi (nền mà ngón tay cái trượt qua). Khi tôi đặt ngón cái chỉ bằng cách sử dụng android: thumb, nó hoạt động tốt. Khi tôi đặt bản nhạc (cho dù ngón tay cái được đặt), công tắc sẽ biến mất hoàn toàn và tôi chỉ còn lại phần văn bản hiển thị.Android Switch Widget: Cài đặt android: track gây ra dấu vân tay và theo dõi để không hiển thị

Đây là mã của tôi khi chỉ là ngón tay cái được áp dụng:

<com.blahblahblah.blah.CustomSwitch 
    android:id="@+id/switch_1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textOff="Off" 
    android:textOn="On" 
    android:text="Something Awesome" 
    android:textColor="@android:color/black" 
    android:thumb="@drawable/custom_switch_thumb" /> 

Đây là những gì nó trông giống như trong cửa sổ xem trước:

enter image description here

Và với sự theo dõi áp dụng:

<com.blahblahblah.blah.CustomSwitch 
    android:id="@+id/switch_1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textOff="Off" 
    android:textOn="On" 
    android:text="Something Awesome" 
    android:textColor="@android:color/black" 
    android:track="@color/track_color" /> 

Cửa sổ xem trước có theo dõi được áp dụng:

enter image description here

Để tham khảo Tôi đang sử dụng Android Studio 0.2.3 trên OSX 10.7.5.

Trả lời

20

Tôi chỉ gặp vấn đề tương tự và tìm thấy bản sửa lỗi qua số HoloEverywhere issue tracker. Bạn sẽ cần đặt <size> của hình dạng XML có thể vẽ được mà bạn đang sử dụng.

Không làm việc (widget là có và tôi có thể tương tác với nó, nhưng tôi không thể nhìn thấy nó, nó ẩn):

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

    <solid android:color="@color/black_50" /> 
</shape> 

làm việc (không phải là thêm <size>):

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

    <solid android:color="@color/black_50" /> 
    <size android:width="56dp" android:height="20dp" /> 
</shape> 
+0

Tôi chỉ phải thêm chiều cao để sửa nó. ví dụ. RobB

0

Nói chung chỉ để thay đổi hình ảnh bạn không cần phải phân lớp một điều khiển, bạn có thể tạo kiểu cho nó, ví dụ: với thuộc tính style.

Về vấn đề của bạn, có một số điều khiển mong đợi màu có thể vẽ được và không đồng đều. Trong định nghĩa điều khiển (phần xml), bạn chỉ có thể xác định rằng bạn cho phép một tham chiếu nhưng bạn không thể giới hạn nó cho các tham chiếu có thể vẽ được. Vì vậy, chỉ cần tránh sử dụng màu trực tiếp. Nếu bạn không muốn thêm hình ảnh, bạn cũng có thể xác định nó bằng xml, nhưng lưu ý rằng điều này không hoạt động trong mọi trường hợp.

+0

Cảm ơn bạn đã trả lời. Tôi biết tôi không cần phải phân lớp kiểm soát, nhưng tôi đang làm điều đó trên bảng cho ứng dụng cụ thể này. Nó sẽ không ảnh hưởng đến bất cứ điều gì, đặc biệt là không phải vào thời điểm này, bởi vì các lớp con của tôi chỉ có các nhà xây dựng bị ghi đè mà chỉ cần gọi super (...) và không làm bất cứ điều gì khác. Tôi đã thử một màu có thể vẽ và chỉ một màu. Tôi chưa tìm thấy một trường hợp mà một màu sắc không * không * làm việc khi một drawable được ưa thích. Nó luôn hoạt động trong mọi trường hợp khác. Trong trường hợp đặc biệt này, sử dụng một drawable hoặc một màu sắc, không ai làm việc. Nó hoạt động tốt cho ngón tay cái, nhưng không phải cho theo dõi. –

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