android的listview分組顯示的時候layout_marginTop失效的解決辦法
在使用android的ListView元件做類似於通訊錄這樣的功能時,需要根據A、B、C這樣的標題來區來分組顯示通訊錄中的姓名,本人在做實驗過程中遇到了這樣一個問題,比如,想讓標題item和上邊的使用者名稱item中間有個間隙,而組(同個標題下)使用者名稱之間不能有間隙,原本以為很簡單,我認為在標題item的最外層LinearLayout中增加一個layout_marginTop屬性即可,結果發現一隻無效,最後請教了個高手告訴我需要在標題item的頂層LinearLayout中再巢狀一層,然後在第二層中設定這個屬性才會有效,最後一試用,果然好了。
ListView分組顯示的程式碼網上浩如煙海,這裡只貼出關鍵的ListView的的兩種item的程式碼如下:
標題item的layout,標紅的就是嵌入的第二層:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical">
<!-- 必須再巢狀一層LinearLayout,否則layout_marginTop失效 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#EDEDED"
android:layout_marginTop="15dip"
android:orientation="horizontal" >
<TextView
android:id="@+id/shopName"
android:layout_width="match_parent"
android:layout_height="40dip"
android:minHeight="30dip"
ndroid:gravity="center_vertical"
/>
</LinearLayout>
</LinearLayout>
姓名的item的layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical" >
<TextView
android:id="@+id/goodName"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:minHeight = "30dip"
android:gravity = "center_vertical"
android:paddingLeft = "10dip"
/>
</LinearLayout>
最後的效果如圖,中間粉紅色的間距就是想要的效果:
原本以為Android開發很簡單,就平時利用業務時間玩玩,沒想到裡邊的細節門道很多,看來我又自以為是了,哈哈哈!