2016-11-03 5 views
9

मैं एक CoordinatorLayout जिसमें बच्चे विचारों पदों ViewCompat.offsetLeftAndRight और ViewCompact.offsetTopAndBottom एपीआई के साथ एनिमेटेड किया जा रहा है के साथ काम कर रहा हूँ।setTranslationX/Y और ऑफसेट LeftAndRight/ऑफसेट टोप एंडबॉटम के बीच अंतर?

जब CoordinatorLayout से कोई बच्चा दृश्य जोड़ा या हटा दिया जाता है, तो लेआउट ऑपरेशन प्रत्येक बच्चे की स्थिति को स्क्रीन के ऊपरी बाएं कोने में रीसेट करता है, यानी बिना ऑफसेट के।

यह article बच्चे दृश्य पर एक लेआउट श्रोता की स्थापना और पुराने पदों को बहाल करके, एक समाधान प्रदान करता है।

मैंने देखा कि setTranslationX और setTranslationY एपीआई का उपयोग करके, यह समस्या नहीं होती है। माता-पिता लेआउट घटनाओं के बाद बच्चे अपनी स्थिति रखते हैं।

मुझे स्क्रीन पर अपने विचारों की व्यवस्था के लिए एपीआई के इन दो सेटों के बीच कैसे निर्णय लेना चाहिए? मैं उनके मतभेदों को समझे बिना या तो उपयोग करने से सावधान हूं। मुझे आधिकारिक दस्तावेज पढ़कर अच्छी समझ नहीं मिली।

सबसे पहली बात:

उत्तर

1

कई महीनों के बाद काफी पुराने सवाल मैं कुछ स्पष्टीकरण की है। ऑफ़सेट दृश्य के लिए क्षैतिज या लंबवत दृश्य को स्थानांतरित करेगा लेकिन इसका स्थायी परिणामों के लिए उपयोग किया जाता है।

mTop += offset; 
mBottom += offset; 

दूसरी ओर होम | पर एक चर जो इस ऊपर/नीचे/छोड़ दिया/सही स्थिति और ज्यादातर एनिमेशन में काम करने के अलावा गणना की जाती है है:

जब आप View#offsetTopAndBottom(int offset) का उपयोग तो आंतरिक रूप से यह इन कार्यक्षमता है ।

यदि आवश्यक हो तो दोनों विधियां एक लेआउट रीफ्रेश ट्रिगर करेंगी।

अधिक यह अच्छा वीडियो में निक कसाई के द्वारा समझाया गया है: https://www.youtube.com/watch?v=86p1GPEv_fY&t=5m42s

के बारे में CoordinatorLayout आप किसी भी बच्चों को मार्जिन की स्थापना परिवर्तन से कर रहे हैं? जैसे BottomSheetBehavior मार्जिन के साथ अच्छी तरह से काम नहीं करता है क्योंकि यह उन्हें अनदेखा करता है। मुझे लगता है कि यह आपके लिए मामला हो सकता है।

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