2011-09-03 10 views
8

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

मेरे पास मेरे गतिविधि लेआउट में इन दो टेक्स्ट व्यू विजेट हैं (हालांकि वे अन्य लेआउट कंटेनरों द्वारा शामिल हैं)।

<TextView android:id="@+id/v_current_time" 
    android:minWidth="26dp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:gravity="right|center_vertical" 
    android:singleLine="true" 
    android:textSize="12sp" 
    android:enabled="false" 
    /> 

<TextView android:id="@+id/v_track_title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="18sp" 
    android:textStyle="normal" 
    android:singleLine="true" 
    android:ellipsize="marquee" 
    android:marqueeRepeatLimit="marquee_forever" 
    android:scrollHorizontally="true" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:enabled="true" 
/> 

संगीत शीर्षक डायनामिक रूप से पाठ की एक लंबी पंक्ति (परीक्षण मामले में) पर सेट किया गया है। यदि मैं निम्नलिखित पंक्ति के साथ वर्तमान समय के लिए पाठ को कभी भी अपडेट नहीं करता हूं, तो संगीत शीर्षक हमेशा के लिए स्क्रॉल करेगा, इससे कोई फर्क नहीं पड़ता कि मैं अपने विराम और प्ले बटन के साथ कैसे बातचीत करता हूं।

tvCurrentTime.setText(DataFormat.formatTime(progress)); 

लेकिन अगर मैं वर्तमान समय के लिए पाठ सेट करता हूं, तो संगीत शीर्षक रुक जाएगा। मेरे विराम बटन को दबाकर किसी भी तरह गियर में वापस स्क्रॉल करना पसंद है, लेकिन खेल दबाने से वर्तमान समय अपडेट हो जाएगा और इसे फिर से रोक दिया जाएगा।

इस सूत्र में सुझाव के अनुसार, मैं इस जोड़ी पर स्क्रॉल शीर्षक के फिर से सक्रिय करने के साथ समय पाठ की स्थापना का प्रयास किया इस प्रकार है:

tvCurrentTime.setText(DataFormat.formatTime(progress)); 
tvTitle.setEnabled(true); 

यह अन्य पुनर्स्थापित करने के लिए की तुलना में विफलता पर कोई प्रभाव नहीं प्रत्येक बार जब यह पुनरारंभ होता है तो स्क्रोलर।

क्या कुछ विवरण है कि मुझे याद आ रही है, या कोई अन्य विचार क्या गलत हो सकता है? आपका बहुत बहुत धन्यवाद!

उत्तर

7

मार्की समस्याग्रस्त है। जब टेक्स्ट व्यू (या टेक्स्टव्यू युक्त विंडो) फोकस खो देता है तो मार्की बंद हो जाती है और रीसेट (टेक्स्ट व्यू के स्रोत देखें)। मैं तुम यहाँ 3 संभव समाधान है लगता है:

  1. आप अपने लेआउट में अन्य सभी दृश्य में android:focusable="false" सेट कर सकते हैं। इस तरह आपका टेक्स्ट व्यू फोकस नहीं खोना चाहिए। लेकिन शायद यह वह समाधान नहीं है जिसे आप चाहते हैं।
  2. मार्की को रोकने और रीसेट करने से रोकने के लिए आप टेक्स्ट व्यू को उपclass कर सकते हैं और onFocusChanged() और onWindowFocusChanged() बदल सकते हैं।
  3. मार्की का अपना कार्यान्वयन बनाएं।
+7

यह पता चला है कि टेक्स्टव्यू एक्सएमएल किसी भी रनटाइम परिवर्तन के बिना काम ठीक से ऊपर कॉन्फ़िगर करता है (सक्षम = सत्य या जो कुछ भी रीसेट करने के लिए) यदि मैं अपने लेआउट फ़ाइल में रिलेवेटिवआउट से छुटकारा पाता हूं और उन्हें LinearLayout के साथ बदल देता हूं। और यदि कोई नहीं तो ऊपर 1 या 2 सुझाव (लगभग 3 के बारे में निश्चित नहीं) काम करता है। यह सापेक्ष लयआउट की एक सूक्ष्म और फर्जी अनियंत्रित विफलता है। रिश्तेदार लेआउट का उपयोग न करने के लिए लेआउट फ़ाइल को पुनर्व्यवस्थित करने के अलावा इस के लिए कोई ज्ञात कामकाज है?यह भी सुनिश्चित नहीं है कि यह भी संभव है क्योंकि मुझे केवल रैखिक लेआउट के साथ लेआउट समस्याओं को दूर करने के लिए रिश्तेदार लेआउट का उपयोग करने की आवश्यकता है। – Groovee60

+6

इस टिप्पणी के लिए धन्यवाद। 'सापेक्ष लयआउट 'इसका कारण बन रहा है। 'LinearLayout' का उपयोग करते समय मार्की ठीक काम कर रही है और अन्य दृश्यों को अपडेट करने से इसे तोड़ नहीं आता है। इस जानकारी के अपने उत्तर के लायक है ... – Knickedi

5

सभी संबंधित LAYout को हटाए बिना इसे हल करने का एक और तरीका है।

आप रिलेवेटलाइट के अंदर एक कंटेनर के रूप में एक लाइनरलाइट के साथ मार्की टेक्स्ट व्यू को आसानी से लपेट सकते हैं।

+0

यह आकर्षण की तरह काम करता है। धन्यवाद पुरुष! –

+0

अब तक का सबसे अच्छा जवाब! –

2

(उत्तर के ऊपर टिप्पणी को बढ़ावा देना) यह बताता है कि टेक्स्टव्यू एक्सएमएल किसी भी रनटाइम परिवर्तनों के बिना काम ठीक से ऊपर है (सक्षम = सही या जो कुछ भी रीसेट करने के लिए) अगर मैं अपने लेआउट फ़ाइल में रिलेवेटिवआउट से छुटकारा पाता हूं और उन्हें बदल देता हूं LinearLayout की। और यदि कोई नहीं तो ऊपर 1 या 2 सुझाव (लगभग 3 के बारे में निश्चित नहीं) काम करता है। यह सापेक्ष लयआउट की सूक्ष्म और फर्जी अनियंत्रित विफलता की तरह प्रतीत होता है।

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