天天看點

Android 1.5和Android 2.1在相對布局(RelativeLayout)上的差別 本文為原創,如需轉載,請注明作者和出處,謝謝!

近日在做一個程式,需要在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所示。

Android 1.5和Android 2.1在相對布局(RelativeLayout)上的差別 本文為原創,如需轉載,請注明作者和出處,謝謝!

圖1  Android 2.1模拟器的顯示效果

    最後在Android 1.5的模拟器上測一下,終于出大事了。android:visibility屬性值為gone的元件并沒有考慮。如果某個可視的圖件的參照元件未顯示,那這個元件就會顯示在清單項的左上角。出現在文字重疊的效果。如圖2所示。

Android 1.5和Android 2.1在相對布局(RelativeLayout)上的差別 本文為原創,如需轉載,請注明作者和出處,謝謝!

圖2  Android 1.5模拟器(出現了文字重疊的效果)

看來要想寫某個版本的Android程式,還得老老實實地使用相應版本的Android模拟器來測試。不知道是從哪個版本的Android開始将未顯示的

元件也作為參照元件的,也許需要試一試,不過不管怎樣,Android

2.1是變了。最後還得重新考慮一下布局問題。希望大家在使用類似功能時要注意這裡點。但願Android

2.1以後的版本不要再變成其他的處理方式了。

估計OPhone也會出現這個問題。由于OPhone 1.6還沒有放出,是以沒辦法測試。讀者在開發OPhone程式時需要注意這一點。

繼續閱讀