2014-10-31 2 views
8

के बीच क्या अंतर है मैं समझता हूं कि DynamicLayout उस लेआउट के लिए है जिसका टेक्स्ट बदल रहा है, जबकि StaticLayout एक अपरिवर्तनीय टेक्स्ट से संबंधित है।StaticLayout और DynamicLayout

हालांकि, दो वर्गों ज्यादातर एक ही तरीके का, उनके डॉक्स के अनुसार है:

http://developer.android.com/reference/android/text/StaticLayout.html http://developer.android.com/reference/android/text/DynamicLayout.html

विशेष रूप से, मैं DynamicLayout वर्ग पर एक विधि setText() नहीं दिख रहा।

उनका अंतर क्या है, और मैं लेआउट की गणना करने के लिए DynamicLayout का उपयोग कैसे कर सकता हूं जहां टेक्स्ट बदल रहा है?

उत्तर

11

टेक्स्ट परिवर्तन पर अपडेट होने के लिए, डायनामिकलायआउट स्पैनेबल को पहले पैरामीटर के रूप में अपेक्षा करता है। उस स्थिति में यह आंतरिक स्थैतिक वर्ग DynamicLayout.ChangeWatcher का उदाहरण बनाता है, और इसे स्पैन करने योग्य में जोड़ता है। बदले में, स्पैन करने योग्य को अद्यतन करने के लिए संपादन योग्य को लागू करने की आवश्यकता है।

उदाहरण:

SpannableStringBuilder base = new SpannableStringBuilder("a"); 
DynamicLayout dynamicLayout = new DynamicLayout(base, base, paint, width, Alignment.ALIGN_NORMAL, 1.0, 0, true); 
int firstHeight = dynamicLayout.getHeight(); 
base.append("\nA"); 
int secondHeight = dynamicLayout.getHeight(); 
संबंधित मुद्दे