近日在做一個程序,需要在ListView中動態擴展每一個列表項。采用的方法是將列表項中某些組件的android:visibility屬性設為 gone,等需要顯示該組件時,再將android:visibility屬性設為visible。而且列表項的布局是RelativeLayout。 android:visibility屬性為gone的組件也參與了相對位置設置。例如,有A、B、C三個組件,其中B的 android:visibility屬性值為gone,也就是說,B不顯示。而A和C顯示。相對位置是B在A的下面,C在B的下面。這麼做比理論上是沒問題的,由於啟動的是android 2.1的模擬器,所以列表項看起來完全正常。如圖1所示。
圖1 Android 2.1模擬器的顯示效果
最後在Android 1.5的模擬器上測一下,終於出大事了。android:visibility屬性值為gone的組件並沒有考慮。如果某個可視的圖件的參照組件未顯示,那這個組件就會顯示在列表項的左上角。出現在文字重疊的效果。如圖2所示。
圖2 Android 1.5模擬器(出現了文字重疊的效果)
看來要想寫某個版本的Android程序,還得老老實實地使用相應版本的Android模擬器來測試。不知道是從哪個版本的Android開始將未顯示的組件也作為參照組件的,也許需要試一試,不過不管怎樣,Android 2.1是變了。最後還得重新考慮一下布局問題。希望大家在使用類似功能時要注意這裡點。但願Android 2.1以後的版本不要再變成其他的處理方式了。