android.preference.DialogPreferenceを利用してちょっと遊んでみた。
WeatherNow 1.6だか2.0だかではAppWidget背景の透過率を従来の10%単位から1%単位での設定に変更します。設定画面でPreferenceクリックしたらダイアログ出して、ダイアログの中でシーク+ボタン+直接入力で透過率設定出来たら便利だよね?!ってことで作ってみた。
DialogPreferenceを継承する上で重要なDialogの表示部分ですが、Androidのソースコード(4.0.1)ではこんな感じになってます。
ダイアログの表示部分自体を変えたければこのshowDialogを、ダイアログで表示する中身を変えたければonPrepareDialogBuilderを、ダイアログが閉じられたときの挙動を変えたければonClickやonDialogClosedをオーバーライドすればいいっぽいです。
そんなわけで、作ってみた。最終的なViewのアウトプットはこんな感じ。
2011/12/05
2011/10/15
子Viewのタッチイベントを取得する
子Viewの実装の有無に関わらず、親となるViewGroupでタッチイベントを取得したい時ってありますよね。
そんな時に便利なのがViewGroup#onInterceptTouchEventというメソッド。
これを利用するには下のサンプルのようにViewGroupを継承した独自ViewGroupクラスを作成し、その中のonInterceptTouchEventを上書きする必要があります。
ひとまず流れだけ。
ちなみにこれをXMLから指定する場合は
こんな感じで使います。
そんな時に便利なのがViewGroup#onInterceptTouchEventというメソッド。
これを利用するには下のサンプルのようにViewGroupを継承した独自ViewGroupクラスを作成し、その中のonInterceptTouchEventを上書きする必要があります。
ひとまず流れだけ。
ちなみにこれをXMLから指定する場合は
こんな感じで使います。
2011/10/10
LayoutInflaterでツボにはまる
LayoutInflaterを利用する際は
こんな感じで利用していると思いますが、ここで落とし穴。
item.xml
こんな風に指定してあったパラメーターが実際の表示上では こんなことに。。。
面倒臭くてもinflateでmatch_parent(fill_parent)パラメーターが必要なViewをもってくる時は、第2引数の親となるViewGroupをきっちり指定しましょう。
LayoutInflater#inflate(int resource, ViewGroup root, boolean attachToRoot)
これの第2引数ViewGroupにnullを指定すると、item.xmlのパラメーターが自動でwrap_contentになってしまう。item.xml
こんな風に指定してあったパラメーターが実際の表示上では こんなことに。。。
面倒臭くてもinflateでmatch_parent(fill_parent)パラメーターが必要なViewをもってくる時は、第2引数の親となるViewGroupをきっちり指定しましょう。
登録:
投稿 (Atom)
