2012年10月29日月曜日

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

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

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

  1. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  2.      <item android:state_pressed="true">  
  3.          <color android:color="#FFFFFF">  
  4.      </color></item>  
  5.      <item>  
  6.          <color android:color="#000000">  
  7.      </color></item>  
  8.  </selector>  

ここでは、私は何も考えずにcolorを使ってしまったのですが、shapeを使って色を指定すれば回避できるようです。
  1. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  2.     <item android:state_pressed="true">  
  3.         <shape android:shape="rectangle">  
  4.             <solid android:color="#FFFFFFc">  
  5.         </solid></shape>  
  6.     </item>  
  7.     <item>  
  8.         <shape android:shape="rectangle">  
  9.             <solid android:color="#000000">  
  10.         </solid></shape>  
  11.     </item>  
  12. </selector>  
ちょっとはまりました。
ご参考までに。


2012年10月27日土曜日

Blogを放置しすぎた

このBlogを書くのをすっかり忘れていてずっと放置していたのですが、 少しずつ書こうと思います。