मुझे ऐसी समस्या का सामना करना पड़ रहा है जहां स्क्रीन पर स्थान लेने के लिए GONE की दृश्यता स्थिति वाले दृश्य (अनिश्चित रूप से) हैं। यह समस्या एपीआई स्तर पर हमेशा होता है < = 7 उपकरणों, लेकिन केवल 8 उपकरणों पर हाल ही में (के बाद मैं AsyncTasks उपयोग किया कुछ खानों को भरने के, Show a progress bar when an Activity is loading के अनुसार)दृश्यता स्थिति के साथ देखें स्क्रीन पर स्थान लेना
संदर्भ से यह है कि: मैं LinearLayout का विस्तार एक कस्टम दृश्य बनाया जिसमें एक "शीर्षक" बटन होता है और (उपयोगकर्ता परिभाषित होता है; कुछ मामलों में, यह कुछ टेक्स्ट व्यू है, अन्य में यह टेबललेआउट्स) "सामग्री" है। इस दृश्य का उद्देश्य शीर्षक बटन पर क्लिक करने के बारे में सामग्री को टॉगल करना है (मुझे विश्वास नहीं है कि इसके लिए एक अंतर्निहित विजेट है .. मैं गलत हो सकता हूं)।
onLayout में() मैं स्पष्ट रूप से चला गया के लिए शीर्षक को छोड़कर सभी बच्चे विचारों की दृश्यता राज्य की स्थापना की, पहली बार है तैयार हो:
protected void onLayout(boolean changed, int l, int t, int r, int b) {
if(initialDraw) {
setContentsVisible(false);
initialDraw = false;
}
super.onLayout(changed, l, t, r, b);
}
public void setContentsVisible(boolean visible) {
for(int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
if(child != mTitle) {
child.setVisibility(visible ? VISIBLE : GONE);
}
}
}
हूप्स। यह एक कॉपी-पेस्ट त्रुटि थी, मैं वास्तव में सुपर कॉल करता हूं .ऑनआउट()। – Adam