我想知道在GridView中为项目(目前是TextView)绘制分隔符的最简单方法。我能想到的唯一方法是在这些TextView周围绘制边框,以便在组合时它们看起来像连续的水平和垂直分隔符。
ListView有setDivider(),但GridView没有?
谢谢。
我想知道在GridView中为项目(目前是TextView)绘制分隔符的最简单方法。我能想到的唯一方法是在这些TextView周围绘制边框,以便在组合时它们看起来像连续的水平和垂直分隔符。
ListView有setDivider(),但GridView没有?
谢谢。
如果您只想要简单的线条边框,更为简单的方法是为GridView
设置背景颜色和适当的填充和间距:
<GridView
(...)
android:background="@color/LightGold"
android:listSelector="@android:color/transparent"
android:horizontalSpacing="1dip"
android:verticalSpacing="1dip"
android:paddingLeft="1dip"
android:paddingTop="1dip" />
很遗憾,经过查看源代码,我没有发现除了为每个单元格添加边框之外,任何简单的方法来添加边框。作为参考,我在此发布我的解决方案。
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:background="@drawable/list_selector">
<!-- Cell contents -->
</LinearLayout>
列表选择器.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="true"
android:drawable="@drawable/item_border_selected"
/>
<item
android:state_pressed="true"
android:drawable="@drawable/item_border_selected"
/>
<item
android:drawable="@drawable/item_border"
/>
</selector>
item_border.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid
android:color="@android:color/transparent"
/>
<stroke
android:width="1px"
android:color="@color/list_divider"
/>
</shape>
item_border_selected.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid
android:color="@color/list_select"
/>
<stroke
android:width="1px"
android:color="@color/list_divider"
/>
</shape>
items_view.xml
<?xml version="1.0" encoding="utf-8"?>
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="-1px"
android:layout_marginRight="-1px"
android:listSelector="@android:color/transparent"
/>
因为所有的线条在连接相邻单元格时都会加倍,所以我将分隔线大小设置为1px而不是1dp,这样在某些屏幕上看起来不会太大。此外,我使网格视图具有负边距,以隐藏两侧的线条。希望这能对其他人有所帮助。