android - Getting coordinate of view with relative to parent ScrollView -
पहले, मेरे पास निम्न नोट, हालांकि, जब थोड़ा जटिल मामला आता है। उपरोक्त कोड अब काम नहीं करता है। मेरे कोड में, अगर मुझे जानकारी देखें 1-3 मिलता है, तो मुझे LinearLayout 0 और में ध्यान देने की आवश्यकता है I < LinearLayout 1 's चीजें बोझिल लग रही हैं सबसे अधिक यह वर्तमान में उपयोगी कोड है बोझिल है लेकिन यह इस समय काम करता है मेरे पास कुछ अवलोकन हैं। मैंने भी (x, y - width, height) यह हमेशा उम्मीद मूल्य से 26 अधिक पिक्सल है। उदाहरण के लिए, पहली पंक्ति ले, 26 = 146 - 120 । मुझे लगता है कि यह केवल अपेक्षित मान के रूप में समान मूल्य प्राप्त करता है, जब पंक्ति पूरी तरह से स्क्रीन पर दिखाई नहीं दे रही है। यकीन नहीं है कि क्यों। आखिरी पंक्ति को देखो, जहां यह वांछित नीचे की वैल्यू (485) होने का अनुमान लगाया गया है। ScrollView और लेआउट है। इसका चयनित दृश्य दृश्यमान कोड काम करने तक स्क्रॉल करें।
& lt; ScrollView & gt; & LT; LinearLayout & gt; & Lt; जानकारी देखें 1 / & gt; & Lt; जानकारी देखें 2 / & gt; & Lt; जानकारी देखें 3 / & gt; & Lt; / LinearLayout & gt; & Lt; / scrollview & gt; निजी शून्य initScrollView () {यदि (this.selectedInfoView == नल) {// स्क्रॉल करने के लिए कुछ भी नहीं वापसी; } ScrollView scrollView = (ScrollView) this.getView ()। FindViewById (R.id.scrollView); Rect rect = new rect (); रीक्ल स्क्रॉलव्यूरेक्ट = नया रीक्ट (); selectedInfoView.getHitRect (रेक्ट); scrollView.getDrawingRect (scrollViewRect); Int dy = rect.bottom - scrollViewRect.bottom; यदि (डीएटी> 0) {scrollView.scrollBy (0, dy); }}
getHitRect एक स्तर के माता-पिता के लिए समन्वय का सम्मान वापस करेगा। इसलिए, उपरोक्त कोड काम करेगा।
& lt; ScrollView & gt; & Lt; LinearLayout 0 & gt; & LT; TextView / & gt; & Lt; LinearLayout 1 & gt; & Lt; जानकारी देखें 1 / & gt; & Lt; जानकारी देखें 2 / & gt; & Lt; जानकारी देखें 3 / & gt; & Lt; / LinearLayout & gt; & LT; TextView / & gt; & Lt; LinearLayout 2 & gt; & Lt; जानकारी देखें 4 / & gt; & Lt; जानकारी देखें 5 / & gt; & Lt; जानकारी देखें 6 / & gt; & Lt; / LinearLayout & gt; & Lt; / LinearLayout & gt; & Lt; / scrollview & gt;
getHitRect । जानकारी देखें 4 - 6 के लिए कब आता है, मुझे LinearLayout 0 और LinearLayout 2 's
getHitRect ।
ScrollView
निजी शून्य इनिटसक्रॉलव्यू () (यदि (this.selectedInfoView == नल) {// स्क्रॉल करने के लिए कुछ भी नहीं है वापसी; } ScrollView scrollView = (ScrollView) this.getView ()। FindViewById (R.id.scrollView); रैखिकरेखा लाइनरलेआउट = नल; यदि (Info.In के इस .selectedInfo उदाहरण) {linearLayout = (LinearLayout) this.getView ()। FindViewById (R.id.linearLayout0); } और (ज़ोर देना) (Info.Info का यह। LinearLayout = (LinearLayout) this.getView ()। FindViewById (R.id.linearLayout1); } Rect rect = new rect (); रीट लाइनर लेटआउटरेक्ट = नया रीक्ट (); रीक्ल स्क्रॉलव्यूरेक्ट = नया रीक्ट (); selectedInfoView.getHitRect (रेक्ट); linearLayout.getHitRect (linearLayoutRect); scrollView.getDrawingRect (scrollViewRect); // रेखीय लेआउट के सापेक्ष समन्वय प्राप्त करें। नोट नीचे देखें Int correct_expected_bottom_y = linearLayoutRect.top + rect.bottom; Int dy = correct_expected_bottom_y - scrollViewRect.bottom; यदि (डीएटी> 0) {scrollView.scrollBy (0, dy); }}
getLocationInWindow ,
getLocationOnScreen और
getLocalVisibleRect के साथ परीक्षण किया है। उनमें से कोई भी सबूत बेवकूफ़ नहीं है।
------------------ - | | (?, 120) & lt; - सही नीचे की उम्मीद है | | (0, 146) & lt; - getLocationInWindow / getLocationOnScreen पर | | (0, 0 - 360, 72) & lt; - getLocalVisibleRect से -------------------- | | (?, 1 9 3) & lt; - सही नीचे की उम्मीद | | (0, 21 9) & lt; - getLocationInWindow / getLocationOnScreen पर | | (0, 0 - 360, 72) & lt; - getLocalVisibleRect से -------------------- | | (?, 266) & lt; - सही नीचे की उम्मीद | | (0, 2 9 2) & lt; - getLocationInWindow / getLocationOnScreen से | | (0, 0 - 360, 72) & lt; - getLocalVisibleRect से -------------------- | | (?, 33 9) & lt; - सही नीचे की उम्मीद | | (0, 365) & lt; - getLocationInWindow / getLocationOnScreen से | | (0, 0 - 360, 72) & lt; - getLocalVisibleRect से -------------------- | | (?, 485) & lt; - सही नीचे की उम्मीद है | [दृश्य नहीं] | (0, 511) & lt; - getLocationInWindow / getLocationOnScreen पर | | (0, 413 - 360, 485) & lt; - getLocalVisibleRect से --------------------
getLocationInWindow
ActionBar , या
StatusBar ऊंचाई द्वारा योगदान दिया जा सकता है।
getLocationOnScreen
getLocationInWindow < / कोड>
getLocalVisibleRect
Comments
Post a Comment