2012-01-13 7 views
23

Tôi muốn một Nền nút duy trì một màu nhất định sau khi nút được nhấp và đổi màu một lần nữa khi một số nút khác được nhấn. Tôi nghĩ đây là trạng thái "state_focused".Trạng thái "state_focused" cho một Nút là gì?

Nhưng hai trạng thái duy nhất tôi có cho Nút của tôi được nhấn hoặc không được nhấn.

Tôi có hiểu trạng thái state_focused một cách chính xác hoặc là StateListDrawable của tôi (xem bên dưới) không?

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_focused="true" android:state_pressed="false"><shape> 
      <solid android:color="#00ff00" /> 
     </shape></item> 
    <item android:state_pressed="true"><shape> 
      <solid android:color="#ff0000" /> 
     </shape></item> 
    <item><shape> 
      <solid android:color="#0000ff" /> 
     </shape></item> 

</selector> 

Trả lời

37

state_focused là bất cứ khi nào nút được tập trung vào việc sử dụng một dpad hoặc trackball. Lượt xem thường không hiển thị trạng thái được lấy nét khi sử dụng chạm.

+0

Cảm ơn dmon. Bạn có thấy anyway để sử dụng một StateListDrawable để thực hiện những gì tôi muốn cho một Button? – aez

+3

Tôi tin rằng bạn có thể sử dụng "focusableInTouchMode", nhưng hướng dẫn của nhà phát triển đề xuất chống lại nó: "Khả năng ở chế độ cảm ứng (xem View.setFocusableInTouchMode) là thuộc tính mà bạn có thể tự đặt, từ mã hoặc từ XML. Tuy nhiên, bạn nên sử dụng nó một cách tiết kiệm và chỉ trong những tình huống rất cụ thể, bởi vì nó phá vỡ sự nhất quán với hành vi bình thường của giao diện người dùng Android. "Xem http://developer.android.com/resources/articles/touch-mode.html. – dmon

+1

Tôi không thể không cảm thấy điều này không trả lời được câu hỏi thực tế. –

33

đây một ví dụ về nút khẳng định:

enter image description here

Fonte: http://developer.android.com/design/style/touch-feedback.html

+3

Cảm ơn ademar111190, nhưng liên kết này chỉ cho tôi biết Chế độ xem có thể trông như thế nào ở các trạng thái khác nhau. Câu hỏi của tôi là làm thế nào người ta có thể nhận được một Button để duy trì một màu nhất định sau khi nó được nhấn và cho đến khi một số Button khác được nhấn. – aez

14

https://developer.android.com/guide/topics/resources/drawable-resource.html

android:state_pressed
Boolean. "true" nếu mục này nên được sử dụng khi đối tượng được nhấn (chẳng hạn như khi một nút được chạm/nhấp); "false" nếu mục này nên được sử dụng ở trạng thái mặc định, không được nhấn.

android:state_focused
Boolean. "true" nếu mục này nên được sử dụng khi đối tượng có tiêu điểm đầu vào (chẳng hạn như khi người dùng chọn đầu vào văn bản); "false" nếu mục này nên được sử dụng ở trạng thái mặc định, không tập trung.

android:state_hovered
Boolean. "true" nếu mục này nên được sử dụng khi đối tượng đang được di chuột bởi một con trỏ; "false" nếu mục này nên được sử dụng ở trạng thái mặc định, không được di chuột. Thông thường, điều này có thể vẽ được cùng một mức có thể sử dụng cho trạng thái "tập trung".
Được giới thiệu vào cấp độ API 14.

android:state_selected
Boolean. "true" nếu mục này nên được sử dụng khi đối tượng là lựa chọn người dùng hiện tại khi điều hướng bằng điều khiển hướng (chẳng hạn như khi điều hướng qua danh sách có d-pad); "false" nếu mục này nên được sử dụng khi đối tượng không được chọn.
Trạng thái đã chọn được sử dụng khi tiêu điểm (android: state_focused) không đủ (chẳng hạn như khi chế độ xem danh sách có tiêu điểm và một mục trong đó được chọn bằng d-pad).

android:state_checkable
Boolean. "true" nếu mục này nên được sử dụng khi đối tượng được kiểm tra; "false" nếu mục này nên được sử dụng khi đối tượng không thể kiểm tra được. (Chỉ hữu dụng nếu đối tượng có thể chuyển giữa một widget checkable và phi checkable.)

android:state_checked
Boolean. "true" nếu mục này nên được sử dụng khi đối tượng được chọn; "false" nếu nó được sử dụng khi đối tượng không được chọn.

android:state_enabled
Boolean. "true" nếu mục này nên được sử dụng khi đối tượng được bật (có khả năng nhận các sự kiện chạm/bấm); "false" nếu nó được sử dụng khi đối tượng bị vô hiệu hóa.

android:state_activated
Boolean. "true" nếu mục này nên được sử dụng khi đối tượng được kích hoạt như lựa chọn liên tục (chẳng hạn như "đánh dấu" mục danh sách được chọn trước đó trong chế độ xem điều hướng liên tục); "false" nếu nó được sử dụng khi đối tượng không được kích hoạt.
Được giới thiệu vào cấp độ API 11.

android:state_window_focused
Boolean. "true" nếu mục này nên được sử dụng khi cửa sổ ứng dụng có tiêu điểm (ứng dụng ở phía trước), "false" nếu mục này nên được sử dụng khi cửa sổ ứng dụng không có tiêu điểm (ví dụ: nếu bóng thông báo là kéo xuống hoặc một hộp thoại xuất hiện).

+0

Cảm ơn Bourbon, nhưng bạn có bất kỳ hướng dẫn nào về cách người ta có thể nhận được một Button để duy trì một màu nhất định sau khi nó được nhấn và cho đến khi một số Button khác được nhấn bằng cách sử dụng StateListDrawable? – aez

+0

Bạn đã thử thực hiện setPressed (true) trong phương thức onClick chưa? – Bourbon

+0

Tôi đã không thử phương pháp cụ thể đó, nhưng có rất nhiều cách để làm điều đó trong mã (và tôi có nó làm việc trong thời gian chạy), tôi chỉ nghĩ rằng nó sẽ sạch hơn nếu tôi có thể làm điều đó trong một XML StateListDrawable thingy. – aez