2012-01-13 8 views
23

बटन बटन क्लिक करने के बाद मुझे एक बटन रंग एक निश्चित रंग बनी रहना चाहिए, और कुछ अन्य बटन दबाए जाने पर रंग फिर से बदलें। मैंने सोचा कि यह "state_focused" राज्य था।बटन के लिए "state_focused" स्थिति क्या है?

लेकिन मेरे बटन के लिए मुझे लगता है कि केवल दो राज्यों को दबाया जाता है या दबाया नहीं जाता है।

क्या मैं राज्य_फोकयुक्त स्थिति को सही ढंग से समझता हूं, या क्या मेरा स्टेटलिस्ट ड्रायबल (नीचे देखें) गलत है?

<?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> 

उत्तर

37

state_focused है जब भी बटन एक dpad या ट्रैकबॉल का उपयोग पर ध्यान केंद्रित कर रहा है। स्पर्श का उपयोग करते समय दृश्य आमतौर पर एक केंद्रित स्थिति नहीं दिखाते हैं।

+0

धन्यवाद डॉन। क्या आप किसी बटन के लिए जो चाहते हैं उसे पूरा करने के लिए किसी भी राज्य सूची का उपयोग करने के लिए क्या देखते हैं? – aez

+3

मेरा मानना ​​है कि आप "फोकस करने योग्य इंटचोड" का उपयोग कर सकते हैं, लेकिन डेवलपर गाइड इसके खिलाफ सुझाव देता है: "टच मोड में फ्यूसेबल (देखें View.setFocusableInTouchMode) एक ऐसी संपत्ति है जिसे आप स्वयं को कोड या एक्सएमएल से सेट कर सकते हैं। हालांकि, आपको इसका उपयोग करना चाहिए यह बहुत ही कम परिस्थितियों में और केवल विशिष्ट परिस्थितियों में है, क्योंकि यह एंड्रॉइड यूआई के सामान्य व्यवहार के साथ स्थिरता को तोड़ता है। "http://developer.android.com/resources/articles/touch-mode.html देखें। – dmon

+1

मैं मदद नहीं कर सकता लेकिन महसूस करता हूं कि यह वास्तविक प्रश्न का उत्तर नहीं देता है। –

33

यहाँ बटन का एक उदाहरण राज्यों:

enter image description here

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

+3

धन्यवाद ademar111190, लेकिन यह लिंक केवल मुझे दिखाता है कि विभिन्न राज्यों में एक दृश्य कैसा दिख सकता है। मेरा सवाल यह है कि जब कोई दबाया जाता है और कुछ अन्य बटन दबाए जाने के बाद कोई एक निश्चित रंग बने रहने के लिए बटन प्राप्त कर सकता है। – aez

14

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

android:state_pressed
बूलियन। "सत्य" अगर ऑब्जेक्ट दबाए जाने पर इस आइटम का उपयोग किया जाना चाहिए (जैसे कि जब कोई बटन स्पर्श/क्लिक किया जाता है); "गलत" अगर इस आइटम को डिफ़ॉल्ट, गैर-दबाए गए राज्य में उपयोग किया जाना चाहिए।

android:state_focused
बूलियन। "सत्य" अगर इस आइटम का उपयोग तब किया जाना चाहिए जब ऑब्जेक्ट में इनपुट फ़ोकस हो (जैसे कि जब कोई उपयोगकर्ता इनपुट इनपुट चुनता हो); "गलत" अगर यह आइटम डिफ़ॉल्ट, गैर-केंद्रित स्थिति में उपयोग किया जाना चाहिए।

android:state_hovered
बूलियन। "सत्य" अगर इस आइटम का उपयोग तब किया जाना चाहिए जब वस्तु कर्सर द्वारा आच्छादित हो; "झूठी" अगर यह आइटम डिफ़ॉल्ट, गैर-अवरुद्ध स्थिति में उपयोग किया जाना चाहिए। अक्सर, यह आकर्षित करने योग्य "केंद्रित" स्थिति के लिए उपयोग किया जा सकता है।
एपीआई स्तर 14.

android:state_selected
बूलियन में शुरू। "सत्य" अगर इस आइटम का उपयोग तब किया जाना चाहिए जब दिशात्मक नियंत्रण के साथ नेविगेट करते समय ऑब्जेक्ट वर्तमान उपयोगकर्ता चयन होता है (जैसे कि डी-पैड के साथ सूची के माध्यम से नेविगेट करते समय); "गलत" अगर ऑब्जेक्ट का चयन नहीं किया जाता है तो इस आइटम का उपयोग किया जाना चाहिए।
चयनित स्थिति का उपयोग तब किया जाता है जब फोकस (एंड्रॉइड: state_focused) पर्याप्त नहीं है (जैसे कि जब सूची दृश्य फोकस होता है और उसके भीतर एक आइटम डी-पैड के साथ चुना जाता है)।

android:state_checkable
बूलियन। "सत्य" यदि ऑब्जेक्ट चेक करने योग्य होने पर इस आइटम का उपयोग किया जाना चाहिए; "झूठी" अगर ऑब्जेक्ट चेक करने योग्य नहीं है तो इस आइटम का उपयोग किया जाना चाहिए। (केवल उपयोगी अगर वस्तु एक चेक करने योग्य और गैर-चेक करने योग्य विजेट के बीच परिवर्तन कर सकते हैं।)

android:state_checked
बूलियन। "सत्य" अगर ऑब्जेक्ट की जांच होने पर इस आइटम का उपयोग किया जाना चाहिए; "झूठी" अगर इसका उपयोग तब किया जाना चाहिए जब ऑब्जेक्ट अन-चेक किया गया हो।

android:state_enabled
बूलियन। "सत्य" अगर ऑब्जेक्ट सक्षम होने पर इस आइटम का उपयोग किया जाना चाहिए (स्पर्श/क्लिक ईवेंट प्राप्त करने में सक्षम); "गलत" अगर ऑब्जेक्ट अक्षम होने पर इसका उपयोग किया जाना चाहिए।

android:state_activated
बूलियन। "सत्य" अगर इस आइटम का उपयोग तब किया जाना चाहिए जब वस्तु लगातार चयन के रूप में सक्रिय हो (जैसे कि पहले नेविगेशन दृश्य में पहले चयनित सूची आइटम को "हाइलाइट" करने के लिए); "झूठी" अगर ऑब्जेक्ट सक्रिय नहीं होने पर इसका उपयोग किया जाना चाहिए।
एपीआई स्तर 11.

android:state_window_focused
बूलियन में शुरू। "सत्य" अगर इस आइटम का उपयोग तब किया जाना चाहिए जब एप्लिकेशन विंडो फोकस हो (एप्लिकेशन अग्रभूमि में है), "झूठी" अगर इस आइटम का उपयोग तब किया जाना चाहिए जब एप्लिकेशन विंडो पर ध्यान केंद्रित न हो (उदाहरण के लिए, यदि अधिसूचना छाया है खींचा या एक संवाद प्रकट होता है)।

+0

धन्यवाद बोर्बोन, लेकिन क्या आपके पास कोई निर्देश है कि कोई बटन दबाए जाने के बाद एक निश्चित रंग बने रहने के लिए बटन कैसे प्राप्त कर सकता है और जब तक कोई अन्य बटन किसी स्टेटलिस्ट ड्रायरेबल का उपयोग करके दबाया नहीं जाता है? – aez

+0

क्या आपने ऑनक्लिक विधि में setPressed (true) करने की कोशिश की है? – Bourbon

+0

मैंने उस विशेष विधि की कोशिश नहीं की है, लेकिन कोड में इसे करने के कई तरीके हैं (और मैं इसे रन-टाइम पर काम कर रहा हूं), मैंने सोचा कि यह बहुत साफ होगा अगर मैं इसे कर सकता हूं एक्सएमएल स्टेटलिस्ट डरावना चीज़। – aez

संबंधित मुद्दे