2013-09-01 38 views
5

Tôi đã tạo nền của riêng mình cho một nút và tôi muốn nút thay đổi khi được nhấp. Tôi tìm thấy mã này:Làm cách nào để đặt trạng thái được nhấp cho nút tùy chỉnh của tôi?

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/boutonnpousse" android:state_pressed="true"/> 
<item android:drawable="@drawable/boutonn"/> 
</selector> 

Nhưng tôi nên sử dụng ở đâu? Tôi đã thử chỉ dán nó trong tập tin XML chính nhưng nó không hoạt động.

Trả lời

3

Bạn sẽ lưu tệp này dưới dạng tệp xml trong thư mục res/drawable. Nếu thư mục này không tồn tại, hãy tạo nó. Trong ví dụ này, tên tập tin mà tôi sử dụng là selector_drawable_name.xml

Sau này, bất cứ khi nào bạn sử dụng một Button, và muốn nó có tác nhấp chuột, thiết lập nền tảng của nó để drawable này:

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Button1" 
    android:background="@drawable/selector_drawable_name" /> 

Kết quả: Khi trạng thái của nút thay đổi thành state_pressed, nền được chọn sẽ là @drawable/boutonnpousse. Mặc định (ở mọi trạng thái khác) sẽ là @drawable/boutonn.

+0

Có! Hoạt động perectly. Cảm ơn nhiều! Tôi mới làm quen với lập trình Android, vì vậy bất cứ khi nào một thứ như thế này không được giải thích đầy đủ chi tiết, tôi sẽ bị mất :) – Guy

+0

@Matthew Không sao cả. Hy vọng lời giải thích có ý nghĩa. – Vikram

+0

Vậy làm thế nào để bạn thay đổi màu của văn bản nút trong trạng thái được tô sáng? tức là: nếu nó là màu đen khi nó không được chọn nhưng màu trắng khi được chọn? – Marchy

1

By the way ... bạn có thể sử dụng máy phát danh sách XML nhà nước trong các trang web sau đây:

http://myandroidsolutions.blogspot.co.il/p/android-state-list-generator-v2.html

Chỉ cần kiểm tra các trạng thái bạn muốn thêm và chỉ định tên file drawable trong các lĩnh vực tương ứng ở phía dưới. Trình tạo sẽ tạo ra các phần tử XML theo đúng thứ tự sử dụng các trạng thái đúng.

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