2015年11月20日金曜日

Android Studio - Version 1.5 cannot be applied to groovy.lang.Closure

Android Studioのバージョンが1.5になりまして、
それに伴い、build.gradleファイルで、

「xxx cannot be applied to groovy.lang.Closure」

が出たので、対処方法。

File - Settings - Build, Execution, Deployment - Build tools - Gradle
Use local gradle distribution - Gradle home

に、正しいパスを設定する。
ちなみに、私の環境ではgradle-2.8でした。
変更前は、gradle-2.4でした。

新しくなった時に、自動で変更してくれればいいのに。


こんなところで。

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を参照するとエラーになりました。


トラップだ。


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

2014年6月11日水曜日

Android Studio - Version 0.6.0 バージョンアップ後のエラー

Android Studio 0.6.0へのバージョンアップ後のエラー、

Error:Cause: unexpected end of block data

の対策メモ。

1. プロジェクトルート直下にある「build.gradle」を開き、
dependencies {
    classpath 'com.android.tools.build:gradle:0.9.+'
}
のところを、
dependencies {
    classpath 'com.android.tools.build:gradle:0.11.+'
}
に変更します。


2. 「src」直下にある「build.gradle」を開き、buildToolsVersionを「19.1.0」に変更します。
android {
    buildToolsVersion "19.1.0"
}
 
3. 「Android SDK Manager」 を実行し、「Tools」-「Android SDK Build-tools 19.1」をインストールします。
 
 
これで、エラーは解消されるはず。
 
 
こんなところで。

2014年4月5日土曜日

Android - SearchViewのText Colorを変更する

Action BarのSearchViewを使用した際、デフォルトのText Colorがアプリの配色と合わなかったので、変更したいなぁ~と思い、いろいろ調べてみたのですが、ほとんどがコード上で変更するものばかりで、スタイルから変更するものが無かったので、スタイルから変更するための設定メモ。
<resources>

    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
        <item name="android:actionBarWidgetTheme">@style/actionBarWidgetTheme</item>
        <item name="android:dropDownListViewStyle">@style/dropDownListViewStyle</item>
    </style>

    <style name="actionBarWidgetTheme">
        <item name="android:textColor">#666666</item>
        <item name="android:textColorHint">#f5f5f5</item>
    </style>

    <style name="dropDownListViewStyle" parent="android:style/Widget.ListView.DropDown">
        <item name="android:background">#ffffff</item>
    </style>

</resources>
Text Colorは、「android:actionBarWidgetTheme」の「android:textColor」、「android:textColorHint」から変更することができます。

あと、履歴がある場合、検索アイコンをタップした際にドロップダウン表示されますが、そのドロップダウンで表示された背景も変えたかったので、合わせて載せておきます。

「android:style/Widget.ListView.DropDown」をparentに指定して、後は「android:background」で色を指定するだけです。


こんなところで。

2014年3月20日木曜日

Android - 自動でソフトキーボードが出るのを防ぐ

アプリを起動して、最初にEditTextにフォーカスが当たってしまうと、ソフトキーボードが自動で出てしまいます。これが嫌だったので、対策メモ。

この自動でソフトキーボードが出てしまうのを防ぐには、
public class TestActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        setContentView(R.layout.activity_main);
    }

}
setSoftInputMode()で、WindowManager.LayoutParamsを設定します。

「SOFT_INPUT_STATE_ALWAYS_HIDDEN」

を設定すると、見事にアプリ起動時にEditTextにフォーカスがあたってもソフトキーボードがでなくなりました。対象のEditTextをクリックすると、ちゃんとソフトキーボードが出ます。

これで、一件落着。

ちなみに、

「SOFT_INPUT_STATE_HIDDEN」

を設定しても、同じ効果が得られます。

さて、何が違うんだろう。


参考:
WindowManager.LayoutParams | Android Developers
Y.A.M の 雑記帳: Android 自動でソフトキーボードが出るのを防ぐ