Android控制元件GridView實現分割線
阿新 • • 發佈:2019-01-06
大家都知道Android ListView設定分割線很簡單,設定如下兩個屬性即可:
android:divider
android:dividerHeight
GirdView預設是沒有網格線的,那麼該如何設定呢?
現介紹兩種方法:
第一、設定垂直、橫向間距,通過GridView和item的背景色來實現
效果圖:
實現方法:
1、設定GridView背景色。
2、設定水平和豎直方向間隔:android:horizontalSpacing和android:verticalSpacing。
3、設定GridView的item的背景色及其選中後的顏色。
程式碼:
GridView佈局:
<GridView android:id="@+id/gridView2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_marginTop="30dp" android:background="#999999" android:horizontalSpacing="2dp" android:verticalSpacing="2dp" android:padding="2dp" android:numColumns="3" >
item佈局:
<?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:orientation="vertical" android:gravity="center" android:background="@drawable/gv_one_selector" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:padding="10dp" android:text="TextView" /> </LinearLayout>
item的選擇器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="true" >
<shape android:shape="rectangle">
<solid
android:color="#CCCCCC"
/>
</shape>
</item>
<item
android:state_pressed="true" >
<shape android:shape="rectangle">
<solid
android:color="#CCCCCC"
/>
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid
android:color="#FFFFFF"
/>
</shape>
</item>
</selector>
至此第一種方法結束。
第二、設定選擇器
效果圖:
方法:設定item的選擇器
程式碼:gv_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="true" >
<shape android:shape="rectangle">
<solid
android:color="#CCCCCC"
/>
<stroke android:width="1.0px" android:color="#999999" />
</shape>
</item>
<item
android:state_pressed="true" >
<shape android:shape="rectangle">
<solid
android:color="#CCCCCC"
/>
<stroke android:width="1.0px" android:color="#999999" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<stroke android:width="1.0px" android:color="#999999" />
</shape>
</item>
</selector>
至此兩種方法已經寫完了,有細心的朋友可能會發現第二種方法的中間的網格線比邊線要粗兩倍,這也是第二種方法的一個不足的地方。
對於本篇部落格若有不足的地方請您批評指正,若您有更好的方法請留言討論,謝謝!