2015年10月5日月曜日

Android - TextSizeとTextColor

Theme.AppCompat.Light.NoActionBar等のマテリアルなスタイルを適用すると、

colorPrimary
colorPrimaryDark
colorAccent
textColorPrimary
textColorSecondary

に、連動してViewの色が変わります。

良い面もあるのですが、ここは違う色にしたいと思ったときに、変更するのが大変なものもあります。

今回ハマったのが、ContextMenuの文字関連。

Themeの設定により、ContextMenuの文字の色が白になってしまい、背景も白なので文字が見えないと言う何ともお粗末な状態になりました。

で、いざContextMenuの文字の色を変更しようと思い、あれこれ試したのですが、まったく変化なし。AndroidのStyleって、ホント思ったようにならないから参ります。わたしの考え方が違うのかな。

今回は、苦肉の策でContextMenuの文字をSpannableStringで作成してセットしました。とりあえず思った色で表示してくれたので良かったです。

文字でいえば、Spinnerで表示する文字の大きさも、思いつくところに設定してもウンともスンとも変わってくれないので、これもSpannableStringのお世話になりました。

SpannableStringに助けられてます。


こんなところで。

Android - DrawerLayoutとAppBarLayout

Androidのバージョンによって、画面の見え方が結構違うので、合わせるのが大変です。

バージョンを幅広く対応させるためにSupport Library等を使用することになるのですが、動作は問題ないけど、Styleまでは吸収してくれないので、余計なところに時間がとられます。

特に、テーマにTheme.AppCompat.Light.NoActionBar等のTheme.AppCompatがからんでくると、さらに複雑になってきます。


今回は、DrawerLayoutについて。

DrawerLayoutを使用してNavigationViewを開くと、画面が暗くなりますが、DrawerLayout内でAppBarLayoutを使用すると、画面が暗くなりません。

対応方法はあるとは思うのですが、今回は、LinearLayoutを使用して応急処置しました。

DrawerLayoutで言えば、Androidのバージョン5以降では、ThemeやStyle、ActivityやFragment、Viewなんかのbackgroundが透過されているとNavigationViewが開いた際、開いた右側の影が出ませんでした。

この解決方法は、まだ見つからず。
とりあえずの応急処置として、NavigationViewに枠線をつけて区切りが見えるようにしました。これはこれで、すっきりした感じになったので、結果オーライ。


IEのバージョンの違いにも振り回されてきましたが、これからはAndroidでもバージョンの違いに振り回されるようになるのかな。


こんなところで。

Android - INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

ずいぶんご無沙汰でした。

Androidアプリの開発を再開しまして、その際にハマったメモ。

アプリを多言語対応したら、

INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

で、インストールできなくなりました。
エラー内容から、AndroidManifestファイルを確認してみることに。


strings.xmlを参照している個所を調べていくと、

providerタグのandroid:authorities

で、stringを参照するとエラーになりました。


トラップだ。


これを見つけるのに、けっこう時間かかったよ。