i++

プログラム系のメモ書きなど

Android

Android : SearchView の hint が表示されない

searchable.xml の android:hint に直接文字列をハードコーディングすると、SearchView が空の時に表示されるはずのヒントテキストが表示されません。 @string/search_hint などの String リソースを定義して、それを参照する必要があります。 OK

Android : SearchView の Voice 入力の結果を表示する

音声入力終了後には onNewIntent が呼ばれるので、その中で拾った検索語を SearchView#setQuery(query, false) でセットします。第二引数は setQuery でセットした語で検索を実行するかどうかなので、true にすると無限ループに陥ります。 (個人的には)Act…

Android : SearchView を入れた layout の xml で Rendering Problem

プレビューに使用する API レベルを 21 以下に下げることで回避できます。 プレビューウィンドウ上部の、画面サイズやテーマを指定するボタンの列に API レベルを変えるボタンもあります。 エラーメッセージの内容は以下の様なもの。 Rendering Problems jav…

Android : Dialog を画面上部に表示する

Dialog の getWindow().setGravity(int gravity) で位置を指定できるので、Gravity.TOP を設定すれば上部に表示されるようになります。 Gravity.BOTTOM に設定すれば画面下部に表示することもできます。 AlertDialog の場合は create して AlertDialog のイ…

Android : ActionBar からの SearchView の取得で NullPointerException

android:actionViewClass としていたところを app:actionViewClass に変更すると解消しました。 Support Library の AppCompatActivity を使用しているアプリだったからと思われます。

Android : animateLayoutChanges=true 設定時の duration (アニメーション速度), delay の変更

コード上から getLayoutTransition() で LayoutTransition を取得して、setDuration(long duration) 及び setStartDelay(int type, long delay) を呼びます。 xml で設定する方法はなさそうです。 getLayoutAnimarion ではないことに注意。

Android : CardView 使用時の Element *** is not allowed here.

Android Studio の方の問題らしく、Android Studio を再起動することで解消しました。 layout の xml で android.support.v7.widget.CardView 内に配置した Element で発生。 自分は LinearLayout, TextView, Button などで発生していたので、どのような Ele…

Android : EditText (AppCompatEditText) の下線を消す / 下線の色を変える

消す場合 android:background="#00000000" で透明な背景にします。 変える場合 colorControl*** を設定した theme をつけて変更します。 EditText の場合は android:theme、AppCompatEditText の場合は app:theme です。 (xmlns:app="http://schemas.android…

Android : DialogFragment で Back Key が押された際に確認のダイアログを表示する

何かを編集するダイアログで、変更を破棄してもよいかどうかを確認する場合などのパターンです。 ポイントは setCancelable(false) を呼んでキャンセルを無効にする Dialog のではなく、DialogFragment 自身の方を呼ぶ 全画面の style を設定している場合、…

Android : TextInputLayout の Hint テキストの色、サイズを設定 + EditText の下線の色の設定

TextInputLayout で EditText の上に表示されるテキストは app:hintTextAppearance を設定して変更します。 デフォルトはアプリのテーマとして指定した colorAccent で、12sp(多分)です。 EditText の下線とカーソル表示の色は colorControl*** を設定した…

Android : Drawable に primary や accent の色をつける(Tint)

Toolbar (ActionBar) の NavigationIcon にプライマリやアクセントのカラーをつけるために使用しました。 オリジナルの白いアイコン画像(Material design icons等から入手)を src に、tint に primary や accent の color を指定した xml リソースを作成し…

Android : (AppCompat) Dialog の NullPointerException at android.support.v7.internal.app.WindowDecorActionBar.getDecorToolbar

ActionBar を使う Theme を指定すると発生しました。 全画面 Dialog を作ろうと "Theme.AppCompat.Light.DialogWhenLarge" を使ってこのエラーを出してしまっていたが、"Theme.AppCompat.Light.NoActionBar" に変える事で解消です。見た目に違いはありません…

Android : FloatingActionButton の xml

ポイント フルパス指定しないと inflate error. ネームスペースを追加(xmlns:app="http://schemas.android.com/apk/res-auto") app:elevation で Z位置(=影の広がりの大きさ)を指定 併せて app:boarderWidth="0dp" をセットしないと elevation による影…

Android : SQLiteDatabase で複数のテーブルを使って検索

多対多のデータベースから検索する場合に。 JOIN を使ったクエリーを作って SQLiteDatabase#rawQuery します。ON句に結合条件を指定です。 下は、TABLE_TOPIC にトピックが、TABLE_TOPIC_TAG にトピックとタグの対応が格納されていて、特定のタグを持つトピ…

Android : SQLiteDatabase で Limit と Offset を使う

SQLiteDatabase#query の String limit に ',' 区切りで Offset と Limit を指定します。 数字だけでよく、"LIMIT N OFFSET M" のように指定すると invalid LIMIT clauses で IllegalArgumentException が出るので注意が必要です。 String[] columns = new S…

android.view.InflateException: Binary XML file line #15: Error inflating class LinearLayoutCompat

layout の xml で、以下のようにフルパスを記載するようにすることでエラー解消しました。class 名だけでは駄目なようです。 SwitchCompat など、他の support ライブラリ系の compat UI 要素も同様に、 xml 中で class をフルパスで記載しないと Error infl…