i++

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

2015-07-01から1ヶ月間の記事一覧

WPF/XAML : Grid の各セルに余白を設定する

Grid.Resources に Style を設定して、Grid 内の子要素に Margin か Padding を設定することで余白を取ります。 注意点は、Grid に配置する全ての要素に余白を設定しようと TargetType の Type を FrameworkElement や UIElement にしても上手くいかず、どの…

WPF/XAML : Grid のセルに枠(罫線) / 背景色をつける

以下の理由から、コードから Grid の Row と Column でループして Rectanble を配置するのが一番楽という結論に。 Grid に用意されている ShowGridLines プロパティはレイアウト上の問題をデバッグするために提供されている機能であるため、スタイルを設定で…

Android : NavigationView の menu にセパレータを表示する

group でまとめて、group に固有の id を設定すると前後に横線が入ります。 <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/drawer_navigation_home" android:checked="true" android:icon="@drawable/ic_home_grey600_36dp" android:title="@string/home"/> </item></menu>

WPF/XAML : Window 起動時のフォーカスを設定する / コードからフォーカスを設定する

Window 起動時のフォーカス設定 XAML の Window タグの属性に FocusManager.FocusedElement="{Binding ElementName=(UI要素に x:Name で付けた名前)}" をつけます。

C/C++ : printf / std::cout のコンソール出力のテキストに色をつける(Windows)

Windows はここで紹介されているようなエスケープコードが効かないので、Windows.h の SetConsoleTextAttribute 関数を使います。 もろもろのメモ。 FOREGROUND_INTENSITY を付けると色が明るめになる 下の例でいうところの Gray が普段のコンソールのテキス…

Android : NavigationView の headerLayout の RippleEffect を消す

クリックイベントを設定していない、ディスプレイ用のヘッダーでもクリック時に RippleEffect が表示されます。 これを消すには、headerLayout に設定したレイアウトの親要素に android:id を設定し、headerLayout に setOnClickListener を付ければ OK。 逆…

Android : SearchView に独自の CursorAdapter を設定する

幅広く独自のレイアウトで検索候補を表示できるようになるので使い勝手が良さそうです。 // bindView をオーバーライドしているので SimpleCursorAdapter のコンストラクタの String[] from は使っていない気がするのだが、null にすると動かない mSearchVie…

Android : SQLite で Cursor の Column を別名で返す

SQLiteOpenHelper (SQLiteDatabase) を使っているデータベースを持っている そのデータベースのテーブルを使って SearchView に検索候補を返したい しかしテーブルのカラムには SearchManager.SUGGEST_COLUMN_TEXT_1 がない! という場合などに使います。 具…

Android : Toolbar のスタイル(背景とテキスト)を変える

背景色は Toolbar の android:background で、テキストの色とシステムアイコン(オーバーフローアイコンやハンバーガーボタン)の色は app:theme で変更します。Application 本体の Theme から変更する場合に使います。 テキストのスタイルを細かく変える場…

Android : SearchView に独自の検索候補を表示する

Adding Custom Suggestions | Android Developers からのメモ書き。 表示する検索候補をコントロールするために ContentProvider を実装する以外、検索履歴を表示する場合とほぼ変わりません。 ContentProvier を実装する query (と onCreate)だけ実装すれ…

Android : Guava を使うための build.gradle の設定

Guava は Google製の Java 用ライブラリ。 Android プロジェクトで使用するには build.gradle (Module: app の方)の dependencies に 'com.google.guava:guava:18.0' を追加します(バージョンはこの記事を書いた時点のもの)。 dependencies { compile file…

Android : SearchView に検索履歴を表示する

Adding Recent Query Suggestions | Android Developers からのメモ書き。 ドキュメントに沿って書けば問題なく動くはずなので、表示されない場合は各所に設定する Authority の文字列や タグに設定する android:name の値を確認しましょう SearchRecentSugg…

Android : SearchView での検索時に追加の情報(Context Data)を渡す

SearchDialog 使用時には、検索を実行する Activity の onSearchRequested() をオーバーライドしてその中で Bundle にデータを入れる方法が記載されていますが、SearchView (SearchWidget) の場合の実装方法は記載がありません。 いろいろ調べた結果、Search…

Android : NavitagionView (DrawerLayout の Drawer) をフルサイズ(画面の高さに合わせて)表示する

アプリ領域全体だけで良い = システムのステータスバー(アンテナとか電池残量とか表示している部分)にオーバーラップしなくても良い、という場合は Toolbar を使うだけで OK です(逆に Toolbar を使う場合に Drawer を被せないようにする場合、Layout に…

Android : DrawerLayout と Toolbar の組み合わせで、Toolbar が画面全体に広がってしまう

DrawerLayout は1つめの子ビューをコンテンツ、2つめの子ビューをドロワーとして扱い、それぞれ自動的に match_parent に設定するため、View の構成を間違えているとそのような事が起きる模様です。 DrawerLayout を使う場合、View の構成は基本的に以下のよ…

Android : SearchView を入れたダイアログで、キーボードを閉じた時にダイアログ自体を閉じる

SearchView#setOnQueryTextFocusChangeListener で hasFocus が false の時に Dialog#dismiss することで実現します。 通常は、1回目の BackKey でキーボードが閉じられるとともに EditText 部分がフォーカスを失い、2回目の BackKey でダイアログが閉じる、…

Android : SearchView を含むダイアログ起動時にキーボードを自動で表示する

Dialog#setOnShowListener にキーボードを表示するコードを入れます。 // AlertDialog.Builder の Create で Dialog を作成 // Dialog にセットした View に SearchView があり、 // mSeachView として変数に保存しているものとする dialog.setOnShowListene…

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 : raw リソースの読み込み(ファイル)

// Context context は引数等で与えられているとする // XXX は raw フォルダに入れたファイル名(拡張子抜き) try { BufferedReader reader = new BufferedReader( new InputStreamReader( context.getResources().openRawResource(R.raw.XXX))); String l…