2016-08-01 3 views
16

खींचते समय चाइल्ड लेआउट में अनदेखा परिवर्तन मैं बच्चे के दृश्य में मार्जिन अपडेट या एनीमेशन लागू करने की कोशिश कर रहा हूं जिसे माता-पिता को ViewDragHelper का उपयोग करके खींचा जाता है।ViewDragHelper -

हालांकि अद्यतन लेआउट गुणों का कोई प्रभाव नहीं पड़ता है और दृश्य खींचने के दौरान प्रस्तुत नहीं किया जाता है। लेआउट एनीमेशन या लेआउट परम अपडेट्स को देखने और हटाने से सब कुछ अनदेखा कर दिया जाता है:

इस समस्या को स्पष्ट करने के लिए, मैंने देरी से चलने योग्य बनाया है जो 3 सेकंड के बाद दृश्य (हरे रंग का दृश्य) की ऊंचाई अपडेट करता है :

spacer.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
      Log.d(TAG,"set layout params!!!!"); 
      ViewGroup.LayoutParams spacerParams = spacer.getLayoutParams(); 
      spacerParams.height = (int) (200+(Math.random()*200)); 
      spacer.setLayoutParams(spacerParams); 
    } 
},3000); 

चेक इस डेमो स्क्रीन रिकॉर्डिंग: http://imgur.com/a/dDiGt

+1

मेरे ज्ञान के लिए, ViewDragHelper केवल ड्रैग किए गए दृश्य के अनुवाद मानों को ऑफ़सेट करता है, यह वास्तव में परिवर्तन नहीं करता है जो पुनः लेआउट का कारण बनता है। – Karakuri

+0

"देखें, 'ViewDragHelper'' का उपयोग करके खींचें, एक बहुत ही अस्पष्ट वर्णन है। क्या यह एक कस्टम घटक है? आप वास्तव में इसका उपयोग कैसे करते हैं? – user1643723

+0

@ user1643723 https://developer.android.com/reference/android/support/v4/widget/ViewDragHelper.html – Richard

उत्तर

1

एंड्रॉयड केवल तैयार LayoutParams जब इसकी एक लेआउट पास जो जब देखें जाया जा रहा है ऐसा नहीं होता कर रही। यदि आप View के आकार को बदलना चाहते हैं, तो इसके एनिमेटिंग के दौरान आपको setScale का उपयोग करना चाहिए। यदि आपको अपने लेआउट को फिर से चलाने के लिए वास्तव में अपने दृश्य की आवश्यकता है तो आप मैन्युअल रूप से layout(left, top, right, bottom) पर कॉल कर सकते हैं।