GridView内のアイテム(現在はテキストビュー)の間に仕切りを描く最も簡単な方法を知りたいです。私が考えることができる唯一の方法は、これらのテキストビューの周りに境界線を描くことです。そうすると、結合されたときに、連続する水平および垂直の仕切りのように見えます。
リストビューにはsetDivider()がありますが、グリッドビューにはありませんか?
ありがとう。
残念ながら、ソースコードを見た後、境界線を追加する簡単な方法は、各セルに境界線を追加するアプローチをとる以外には見られませんでした。参考として、ここにソリューションを投稿します。
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>
list_selector.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"
/>
すべての行は隣接するセルを結合するときにサイズが2倍になるので、一部の画面では大きすぎないように、1dpではなく1pxの仕切りサイズを作成しました。また、グリッドビューに負のマージンを持たせ、両側の線を非表示にしました。これが誰かの助けになることを願っています。
単純な線だけを境界線にしたい場合は、GridView
の背景色と適切なパディングとスペースを設定する方がはるかに簡単です。
<GridView
(...)
Android:background="@color/LightGold"
Android:listSelector="@Android:color/transparent"
Android:horizontalSpacing="1dip"
Android:verticalSpacing="1dip"
Android:paddingLeft="1dip"
Android:paddingTop="1dip" />