2014-11-04 10 views
8

क्या यह संभव है पहुंच-योग्यता फ़ोकस क्रम बदलने के लिए संशोधित करें? उदाहरण के लिए, यदि मेरे पास 3 विचार हैं, तो आईडी आईडी 1, व्यू 2 और व्यू 3 के साथ, क्या एक्सेसिबिलिटी फोकस देखने के लिए एक आसान तरीका है जब उपयोगकर्ता दृश्य 1 से सही स्वाइप करता है?पहुंच-योग्यता फ़ोकस आदेश

यहाँ मैं क्या कोशिश की है है:

मैं एक रेखीय लेआउट में निम्नलिखित है।

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/imageView" 
    android:focusable="true" 
    android:nextFocusUp="@+id/imageView3" 
    android:nextFocusDown="@+id/imageView3" 
    android:nextFocusRight="@+id/imageView3" 
    android:nextFocusLeft="@+id/imageView3" 
    android:nextFocusForward="@+id/imageView3" 
    android:src="@drawable/ic_launcher"/> 

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/imageView2" 
    android:focusable="true" 
    android:src="@drawable/ic_launcher"/> 

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/imageView3" 
    android:focusable="true" 
    android:nextFocusUp="@+id/imageView2" 
    android:nextFocusDown="@+id/imageView2" 
    android:nextFocusRight="@+id/imageView2" 
    android:nextFocusLeft="@+id/imageView2" 
    android:nextFocusForward="@+id/imageView2" 
    android:src="@drawable/ic_launcher"/> 

फिर, मैं इसे लॉन्च करता हूं और पहली छवि दृश्य पर अभिगम्यता फोकस करता हूं। अगले आइटम पर जाने के लिए दाएं स्वाइप करने पर, मैं उम्मीद करता हूं कि यह छवि दृश्य 3 पर पहुंच-योग्यता फ़ोकस को स्थानांतरित करे, लेकिन इसके बजाय यह imageView2 पर जाता है। जैसे आप अब एपीआई के लिए TalkBack को ट्रेवर्सल क्रम निर्धारित कर सकते हैं

+2

तकनीकी तौर पर हाँ, आप स्पष्ट रूप से ट्रेवर्सल आदेश अगर आप एक AccessibilityDelegate सेट और जोड़ने के बच्चे मैन्युअल नोड निर्दिष्ट कर सकते हैं, लेकिन यह अन्य मुद्दों का कारण बनता है और यदि TalkBack को का तरीका बदलता है फोकस ट्रेवर्सल संभालती है काम करने के लिए गारंटी नहीं है। यह अभी भी अभिगम्यता ढांचे के खिलाफ एक खुला सुविधा अनुरोध है। – alanv

+0

@alanv क्या आपके पास बकाया सुविधा अनुरोध का लिंक है? मुझे इसकी प्रगति का पालन करना अच्छा लगेगा। ट्रैवर्सल ऑर्डर बदलना नए फ़्लोटिंग एक्शन बटन के लिए विशेष रूप से सहायक होगा। यदि यह एक ऑटो लोडिंग सूची पर तैर रहा है, तो उपयोगकर्ता को कभी भी स्वाइप करके इसे कभी नहीं मिल सकता है। (इस समस्या के उदाहरण के लिए इनबॉक्स देखें) –

+0

कभी नहीं, ऐसा लगता है कि यह अभी एपीआई 22 में जोड़ा गया था! मूल quesiton के लिए एक जवाब जोड़ा गया। –

उत्तर

8

लगता 22+! तो कोड कुछ इस तरह दिखेगा:

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/imageView" 
    android:focusable="true" 
    android:src="@drawable/ic_launcher"/> 

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/imageView2" 
    android:focusable="true" 
    android:accessibilityTraversalAfter="@id/imageView3" 
    android:src="@drawable/ic_launcher"/> 

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/imageView3" 
    android:focusable="true" 
    android:accessibilityTraversalAfter="@id/imageView" 
    android:src="@drawable/ic_launcher"/> 

http://developer.android.com/reference/android/R.attr.html#accessibilityTraversalAfter

accessibilityTraversalAfter: यह एक जिसके बाद पहुंच ट्रेवर्सल में दौरा किया है एक दृश्य की आईडी सेट करता है।

+10

क्या इसके लिए संस्करण <22 के लिए कोई समाधान है? – vtlinh

+3

मुझे लगता है कि @ vtlinh सवाल मूल की तुलना में और भी महत्वपूर्ण है। 22 बहुत हालिया है। क्या किसी को पता है कि पुराने संस्करणों का समाधान क्या है? – Carlos

+0

मुझे 'RecyclerView' आइटम में इसका उपयोग करने वाले मुद्दों का अनुभव होता है। यह वर्तमान आइटम पर ट्रैवर्स करने के बाद सूची के अगले आइटम पर कूदता है। – azizbekian