先日、自分のプロジェクトにdeclare-styleableを追加したらビルドが出来なくなったのでメモ的な。
環境:
IntelliJ 12.1.4、Android Studio 0.1.6
SDK 22.0.1、Build-tools 17
結論:
idリソースと重複する名前のdeclare-styleable > attr > enum (flag)を定義することは出来ない
具体的には、以下のように定義したidと同じ名前を持つenum、flagが定義できない。レイアウトXML等で『android:id="@+id/sample"』と設定している分には問題無いのだけれど。。。
↓コンパイルエラー
↓OK
Androidあれこれ
自分がAndroidアプリを作っていく中で感じたことを徒然と。
2013/06/22
2013/06/01
レイアウトxmlにViewの追加情報を仕込む
レイアウトxmlからViewを取得する時に、その取得対象が固定的な内容だったらFragmentに固定で書いても良いけれど、パースするxmlがコロコロ変わる場合はどのViewにどの情報を表示して良いか分からないよね!
→ xmlに仕込みを入れておけばいいじゃない!!(楽観視)
サンプル:TextViewに曜日情報を仕込んで、Activityから取得する。
こんなカスタム属性を用意しておけば、ViewのIDと日付を同時に取れます。
レイアウトxmlにこんな感じでカスタム属性を仕込みます。3行目は自分のアプリ名。namespaceのnxは「noxi」の略なので自分に合ったものに変えることをお勧めします。
android.view.LayoutInfleter$Factoryを実装したクラスを作ります。これを実装することで、xmlパースの処理をフックすることが出来ます。
LayoutInflater#fromでLayoutInflaterを取得し、setFactoryで今回作成したクラスをセットします。ちなみにLayoutInflater$Factory2とかあるらしいけど、違いは親のViewGroupが引数に入るかどうかとAPI11なこと。
→ xmlに仕込みを入れておけばいいじゃない!!(楽観視)
サンプル:TextViewに曜日情報を仕込んで、Activityから取得する。
こんなカスタム属性を用意しておけば、ViewのIDと日付を同時に取れます。
レイアウトxmlにこんな感じでカスタム属性を仕込みます。3行目は自分のアプリ名。namespaceのnxは「noxi」の略なので自分に合ったものに変えることをお勧めします。
android.view.LayoutInfleter$Factoryを実装したクラスを作ります。これを実装することで、xmlパースの処理をフックすることが出来ます。
LayoutInflater#fromでLayoutInflaterを取得し、setFactoryで今回作成したクラスをセットします。ちなみにLayoutInflater$Factory2とかあるらしいけど、違いは親のViewGroupが引数に入るかどうかとAPI11なこと。
ラベル:
Android,
declare-styleable,
View
2012/12/09
通知のカスタムレイアウトでつぼる
通知のカスタムレイアウトに使用するViewの最初の要素をリソースで指定すると死ぬらしい。。。
#OKな例
#NGな例
そんなん知らんがな。。。(´・ω・`)
※※※
そもそも通知の高さをdpで指定している時点でNGな気がするけれど、match_parentだと表示がおかしくなる端末、OSがあったりして、やむを得ず。
#OKな例
#NGな例
そんなん知らんがな。。。(´・ω・`)
※※※
そもそも通知の高さをdpで指定している時点でNGな気がするけれど、
ラベル:
Notification,
RemoteViews
登録:
投稿 (Atom)