2012年10月29日月曜日

[Android]ListViewのlistSelectorを使ってタップしたときに色を変える

ListViewのアイテムを選択されたときに色を変える方法は、<selector>を用意してその子要素にタップしたときの色を指定するitemはandroid:state_pressed をtrueにしたものを用意し、選択していないときの色はデフォルトの色で行います。

ここで、
ListViewのアイテム選択にはバグがあるようです。
listSelectorを下記のようにすると、リストのアイテムを選択したときに
Android2.xだと選択行以外も選択されてしまいます。(Android4.xではこの現象はおきません。)

<selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true">
         <color android:color="#FFFFFF">
     </color></item>
     <item>
         <color android:color="#000000">
     </color></item>
 </selector>


ここでは、私は何も考えずにcolorを使ってしまったのですが、shapeを使って色を指定すれば回避できるようです。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFFc">
        </solid></shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#000000">
        </solid></shape>
    </item>
</selector>

ちょっとはまりました。
ご参考までに。


0 件のコメント: