i++

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

Android : android.view.InflateException: Binary XML file line: Error inflating class android.support.design.widget.NavigationView

今回の NavigationView については自分の場合は ProGaurd が原因で、以下の行を proguard-rules.pro に書き加えることで、実行時に表題の InflateException が発生することはなくなりました。 -keep class android.support.v7.widget.LinearLayoutManager { …

Android : Overflow メニューにアイコンを表示する

Overflow メニューに入れられたメニュー項目はそのままではアイコンが表示されませんが、以下の方法でアイコン表示を行うことができました。 コードで実現するバージョン 利点 標準的なメニューの見た目、挙動を保てる 欠点 Reflection を使用しているので将…

Android : Can't bind to local 8600 for debugger 確立された接続がホスト コンピューターのソウトウェアによって中止されました

AndroidStudio でアプリを実機デバッグしようとした際に遭遇しました。 デバイスを抜き差しするだけでは直らず、 デバイスの USBケーブルを抜く AndroidStudio を終了する Waiting for process detach ダイアログが終わらなかったので強制終了 AndroidStudio…

Kotlin : ビット演算メモ

& や | という記号ではなく and、or を使います。 また、|= や &= といった複合代入演算子形式の記載方法はありません。 Java/C系言語での書き方 Kotlin での書き方 x &= y x = (x and y) x |= y x = (x or y) x ^= y x = (x xor y) ~x x.inv() ※ and や or …

Android : SwipeRefreshLayout の更新中 Indicator を起動時に表示する

onCreateView で直接 SwipeRefreshLayout.setRefreshing(true) をしても表示されないので、post を使って少し遅らせてから refreshing が true になるようにします。 SwipeRefreshLayout の onMeasure が呼ばれて、サイズが確定してから refreshing を true …

Android : WebView 覚え書き(ズーム関連の機能の有効化、Progress の表示、Back Key のハンドリングなど)

やりたい事 方法 ピンチ操作によるズームイン / ズームアウトの有効化 webview.settings.builtInZoomControls = true ダブルタップによるズームイン / ズームアウトの有効化 webview.settings.useWideViewPort = true ズームボタン(右下に表示される±のルー…

Android : SwipeRefreshLayout で ListView に EmptyView を設定すると ListView が空の時に Refresh 表示が上手くされない問題を解消する

ListView.setEmptyView で Empty View を設定していると、ListView が空の状態で SwipeRefresh (PullToRefresh) を実行すると Refresh の Indicator (上の方でくるくる回る、setRefreshing でコントロールされるもの)が、更新が終わった瞬間辺りに一瞬表示…

Android : Warning:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (23.1.0) and test app (22.2.0) differ.

エラーメッセージ全文は以下のとおりです。 解決のために参考となる URL が記載されているなんて素晴らしい! Warning:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (23.1.0) and test app (22.2.0) dif…

Kotlin : as, !, ? 周りのチートシート

キャストや、型や変数の後ろにつける ! 記号、 ? 記号の意味についてのまとめです。 ? var b : String? = "abc" b = null 型宣言に付けた場合は nullable (Kotlin は明示的に ? を付けないと null を代入できない)。 var l = b?.length 変数に付けた場合は…

Git : fatal: Failed to lock ref for update: No such file or directory

Git

エラーが発生した手順 sandbox/foo というブランチを作成する sandbox/foo/bar というブランチを作成しようとする エラーの原因 sandbox/foo というブランチを作成しようとした時点で、 git が sandbox 以下に foo というファイルを作成している sandbox/foo…

Android : SlidingTabLayout を使う + タブの幅をウィンドウ幅に合わせる

SlidingTabsBasic | Android Developers のコードをダウンロードして(右上のボタンで可能)Android - SlidingTabsBasicをプロジェクトに導入する - Qiita に沿って適宜ファイルをコピーしていけば SlidingTabLayout を使えます。 ただし、SlidingTabsBasic …

Kotlin : Unresolved reference: field

Kotlin の custome setter で $プロパティ名 を使っていたところ、$プロパティ名 という書き方は deprecated になったので代わりに field を使ってね、というメッセージが出たので素直に従ったところ、Unresolved reference Error が発生しました。Kotlin の…

C#/.NET : インストールされているドライバーのリストを調べる、検索する

サンプルコード ※「参照の追加」で「System.Management」を追加する必要があります(アセンブリ⇒フレームワーク)。 System.Management.SelectQuery query = new System.Management.SelectQuery("Win32_SystemDriver"); // 特定のドライバーを検索したい場合…

WPF/XAML : DataGrid の表示内容を TextBox への入力内容でフィルタリングする

ポイントは以下の3点です。 DataGrid の ItemsSource に CollectionViewSource.View を使う CollectionViewSource.Filter にフィルタリング用の関数を登録する TextBox の入力に変更がある度に CollectionViewSource.View.Refresh() を呼ぶ サンプルコード …

Android : ListView (ArrayAdapter) で使う View に RadioGroup.setOnCheckedChangeListener を使うと起こる問題について

原因や問題が起きる条件が全く解明できていないものの、ひとまずメモ。 ListView で表示する項目の View に RadioGroup を含める その RadioGroup に setOnCheckedChangeListener を設定し、その中でデータ(getItem(position) で得られるもの)を変更する …

Android : Toolbar + DrawerLayout で Drawer を一時的に無効にして Navigation Icon (homeAsUpIndicator) を変更する

ActionBarDrawerToggle.setDrawerIndicatorEnabled(false) で「ハンバーガーアイコン + Drawer の開閉」を無効にすると、 setToolbarNavigationClickListener で設定したリスナーが呼ばれるようになる Toolbar.setNavigationIcon で Navigation Icon (左上の…

プログラマの英語 : Power off と Shutdown

※ Linux 等のコマンドの違いの話ではなく、Power Off(電源を切る) と Shutdown(シャットダウン)、それぞれの語から受ける言葉の印象の話です。 どちらも同じ結果を意図して違いを意識せずに用いられる事が多いと思いますが、それぞれ以下のようなニュア…

WPF/XAML : TextBox に入力ヒントを表示する

WPF界隈では hint ではなく watermark とも呼ぶらしいですね。Android の方では watermark という呼び方を聞いたことはないのですが。 参考にしたサイト(下記記載)には AttachedProperty を使った方法や Trigger を使った方法も掲載されており、「TextBox …

プログラマの英語 : state と status の違い・使い分け

どちらも「状態」を意味し、普通の英文として使う場合でも、コード中の変数名や enum 定義に使用する場合でも、往々にして交換可能なのですが、全く同じ意味合いを持っているという訳ではありません。 そのニュアンスの違いと使い分け方について考えてみます…

プログラマの英語 : enbug の正しい言い換え方と語源の推測

enbug(エンバグ)とは「ある変更が(他の箇所で)別のバグを生む」というような意味で使われる用語ですが、これは和製英語であって世界的に標準的な英単語としては存在しません。 例えば英辞郎や Weblio といった日本の英語辞書サイトではエントリーが存在…

WPF/XAML : プロジェクト作成時のデフォルトの MainWindow.xaml などを変更する

AssemblyInfo.cs のデフォルト編集の内容とほぼ同じですが、以下のパスにあるプロジェクトのデフォルトとして使われるファイルを編集することで MainWindow.xaml やその他を変更できます。 ; VS2013 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Co…

WPF/XAML : TabControl 中の TabItem の高さを自動で揃える

TabControl に Grid.IsSharedSizeScope="True" を設定し、各 TabItem 内のコンテンツを同じグループの Grid に置くことで高さを共有します。 サンプル 2つめの TabItem の中身の高さを 1つめより低く設定していますが、Grid.IsSharedSizeScope を使うことで …

コマンドプロンプト : ネットワークインターフェースの設定(IPアドレス)を変更する

固定 IP を設定するには netsh interface ip set address "インターフェース名" static 192.168.0.1 255.255.255.0 DHCP にするには netsh interface ip set address "インターフェース名" static 192.168.0.1 255.255.255.0 インターフェース名を見るには n…

Unreal Engine : スタティックメッシュエディタのカメラ速度を変更する

右マウスボタンを押しながらマウスホイールを上に回転させると速度アップ、下に回転させると速度ダウンします。現在のカメラ速度の表示はなさそうです。 また、一度スタティックメッシュエディタを閉じてしまうと設定は解除されてしまいます。

C# : 文字列がアルファベットと数字(+ α)のみで構成されているかを調べる

正規表現クラス(System.Text.RegularExpressions.Regex)を使い、許可する文字以外のマッチがあるかどうかを判定し、それを反転します。 using System.Text.RegularExpressions; // 数字とアルファベットのみ isAlphaNumericOnly = !Regex.IsMatch(name, @"…

WPF/XAML : DataGrid にボタンの列を追加する

DataGrid のセル中に自分で定義した UI 要素を入れられる DataGridTemplateColumn という汎用的な列を定義し、その DataGridTemplateColumn.CellTemplate -> DataTemplate の中に Button を指定します。 サンプル DataGrid に DataGridTemplateColumn を置き…

Visual Studio : ビルドイベントで同じソリューション内の他プロジェクトの成果物をコピーする

プロジェクトのプロパティから「ビルド イベント」のパネルを開き、コマンドラインで xcopy を使います。 ビルド先のフォルダ名を取得するためのマクロや xcopy については以下のリンク先が参考になります。 ビルドのコマンドとプロパティのマクロ xcopy フ…

Android : Warning:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (22.2.1) and test app (22.2.0) differ.

Espresso が 22.2.0 を必要としていてそれが conflict を招いているので gradle で ResolutionStrategy を設定して解消します。 Warning:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (22.2.1) and test…

TypeScript : Visual Studio のプロジェクトでコンパイルオプションを指定する

Visual Studio で TypeScript のコンパイルオプションを指定するには、プロジェクトのプロパティの TypeScript パネルから設定しますが、そこにないオプションについては(プロジェクト名).csproj を直に編集します。 例えば Decorator を使用するには、--emi…

WPF/XAML : Behavior の PastingHandler で MessageBox を表示する

ポイント PastingHandler をつけるには DataObject.AddPastingHandler を使用する 外すときは RemovePastingHandler PastingHandler として設定した関数で直接 MessageBox.Show を呼ぶと例外が発生するので Dispatcher.InvokeAsync を使う Aync じゃない方の…