読者です 読者をやめる 読者になる 読者になる

ぴーさんログ

だいたいXamarin.Formsのブログ

Microsoft MVP for Visual Studio and Development Technologies を受賞しました

2017年3月づけ(?)でMicrosoft MVP Awardを受賞しました。 受賞カテゴリはVisual Studio and Development Technologiesです。 今年の2月からMicrosoft MVP Award Programが改定され、年4回だった審査&表彰が毎月になりました。私はその第二陣ということにな…

【Xamarin.Forms向け】ItemsSource BindablePropertyを追加するコードスニペット

BindableなItemsコントロールを作るときにコピペしてね。(ItemsViewを自分のコントロールに置換しよう)

【Xamarin.Forms 2.3.4-pre】ちゃんとBindableになったPicker

Xamarin.Forms 2.3.4-preでPickerがItemsSourceとItemSelectedをサポートするようになります。すっごーい! さっそくこんな感じのViewModelを用意してContentPageのBindingContextにセットします。 public class ViewModel : INotifyPropertyChanged { publi…

【Xamarin.Forms 2.3.4-pre】新しいOnPlatformメカニズム

Xamarin.Forms 2.3.4-preで新しいOnPlatformの仕組みが導入され、従来の物は非推奨となります。 概要 動作プラットフォームを文字列で判別するアプローチに変更(従来はenum) Xamarin.Formsがサポートしていないプラットフォームへの対応が容易に(Tizenとか) …

Xamarin.Forms.TabbedPageのiOS版でタブを上側に変更するサンプル

teratailで回答したやつ。 Xamarin - Xamarin.FormsのTabbedページのUIをiOSとAndroidで揃えたい(62739)|teratail スクショ stackoverflowの回答を参考にしています。 ios - Positioning UITabBar at the top - Stack Overflow Xamarin.iOS側のプロジェクト…

Xamarin.Androidでアプリのビルド時にJavaのヒープがあふれる時の対処

Xamarin.Androidでアプリのビルド時に... java.lang.OutOfMemoryError. Consider increasing the value of $(JavaMaximumHeapSize). Java ran out of memory while executing 'java.exe -jar ~' のようにJavaのヒープ領域があふれてエラーになったら 対処 X…

【Xamarin.Forms 2.3.3】 Platform Specifics

Xamarin.Forms 2.3.3で Platform Specifics という機能が追加されました。 これはPCLなどの共通コードからプラットフォーム固有の機能を呼び出したりする類のものです。(ただしコードビハインド限定) Forumでの紹介文によると... Introducing Platform Speci…

Xamarin.Forms.Tizenをハックして地図を表示してみる

この記事は Xamarin(その2) Advent Calendar 2016 20日目の記事です。 Xamarin.FormsにTizenが参戦!? Connect(); // 2016 のキーノートにて電撃的にXamarin.Forms.Tizenが発表され、一部界隈に衝撃を与えました。 衝撃を受ける様子 Tizen!?死んだはずで…

アイコンTシャツのすすめ

普段はTwitterなどで電子の妖精として活躍している皆さん!、勉強会には仮初めの肉体で参加せざるを得ないため、顔とアイコンが一致せずに困った経験があるのでは? そんな問題を解決するため、Twitterアイコン入りTシャツを作ってみました。 ついったーの画…

Xamarin入門者の集い supported by teratail に登壇してきました

2016年10月26日(水)にレバレジーズ株式会社にて開催された「Xamarin入門者の集い supported by teratail」にゲストスピーカーとして登壇してきました。 jxug.connpass.com ytabuchi.hatenablog.com 新しくXamarinを始めた人たちはXamarin.Formsから入ること…

【Xamarin.Forms】MasterDetailPageのMaster側を右寄せにするサンプル

Xamarin.FormsのMasterDetailPageのMaster部分(ドロワー?)を右寄せに改造するサンプルです。 Rendererとリフレクションを駆使して頑張ってます。AndroidとiOS(Phone)に対応。 GitHub - P3PPP/RightMasterDetailPageSample: Xamarin.FormsのMasterDetailPage…

【Xamarin.Forms】RelativeLayoutとConstraintのちょっと深い話

最近こんな質問に回答してました。 teratail.com という訳で今回は、RelativeLayoutの子要素にConstraintを再セットすることについて少し掘り下げます。 C#でRelaytiveLayoutにレアイアウト制約付きで子要素追加する際のコードはこんな感じです。 var label …

Xamarinでの開発はWindowsとMacのどちらが良いのか?

時々聞かれるのですが...... 大前提として、WindowsでVisual Studioをメインに使っていくにしてもiOSアプリのビルドにはMacが必要です。 モバイルアプリを(クロスプラットフォームで)開発しようというのに、iOSに対応しないという事は基本的に無いでしょう。…

【Xamarin.Forms 2.3.3 -pre2】XAML内でのネイティブView定義とBindingのサポート

Xamarin.Forms 2.3.3 -pre2でXAML内でネイティブプラットフォーム(iOS、Android、UWP)のコントロールを配置できるようになります。 これはXamarin.Forms 2.2で追加されたNative Embeddingという機能の発展系であると言えます。 ticktack.hatenablog.jp Nativ…

【Xamarin.Forms】XAMLでViewの縦横比を一定に保つ

teratail.com Teratailの"Xamarin Studioで幅は画面と同じ大きさ、高さが画面の幅に対して50%のViewを作りたい"(iOS)という質問に回答した時に、Aspect RatioのConstraint便利だなーと思ったのでXamarin.Formsでも同じようなことをやってみましょう。 C#でイ…

JXUGC #16 Xamarin.Forms Custom Renderer ハンズオン を開催してきました

さる2016/8/10、渋谷のdots.さん会場にて「JXUGC #16 Xamarin.Forms Custom Renderer ハンズオン」というイベントをやってきました。先生役で。 Twitterの反応を見る限り、おおむね好評だったようで何よりです。 イベントページ JXUGC #16 Xamarin.Forms Cus…

【Xamarin.Forms】ViewRendererと仲良くなるための簡易チュートリアル

この記事はXamarin.Formsの標準コントロールだけでは対応しきれなくなった時、ViewRendererを駆使した独自コントロールで乗り越えるためのチュートリアルです。 目次 Xamarin.Formsコントロールの仕組み 独自のコントロールを作る Binding可能なプロパティで…

【修正版リリース済み】Xamarin.Forms 2.2.0.43を使うとiOSで死ぬっぽい

※本件の修正版(Xamarin.Forms 2.2.0.45)がリリース済みです。そちらを使えば問題ありません。 フォーラムでのアナウンスによると... Thanks for all of your reports. There was a problem with the build/packaging. The issues are now fixed. Please upda…

Realm Xamarinを試してみた

5/10にRealmのXamarin対応版が公開されたので試してみました。 Realm Xamarinを公開! - Realm is a mobile database: a replacement for SQLite & Core Data RealmはSQLiteやCoreDataから置き換わることを目標とするモバイルデータベースです。 Realm Xamar…

JXUGC #13 東京でLTしてきました

2016/5/7(土)に開催された「JXUGC #13 東京 緊急開催 Xamarin のすべて!」でLTしてきました。 イベントページ(connpass) 資料や動画 togetter Xamarin.Formsでアプリを公開した話 from P3PPP 今回のJXUGカンファレンスは参加人数がとても多く(約150人の定員…

「ごちうサーチ」のアイコンを描きました

本日公開されたMacストアアプリ「ごちうサーチ」のアイコンを描いてました。 ごちうサーチがストアで公開されました!ソースを公開してくださった @ksasao さん,アイコンを作ってくださった @ticktackmobile さんに大感謝です! https://t.co/Txk9XfLqmg pi…

【Xamarin.Forms 2.3プレビュー】Xamarin.Forms Themesを触ってみた

Evelve 2016で紹介されたXamarin.Forms Themesが(ようやく)NuGetに配信されました。 中身のdllを見る限り、現時点ではiOS、Androidのみ対応しているようですね。 早速試した方がいらっしゃいます! Xamarinメモ その18 Xamarin.Forms.ThemesをPrism.Unity.Fo…

Xamarin.Formsでプラットフォーム固有実装を扱う手段が増えてきたので整理してみる

Xamarin.Formsのリリースから約2年、当初よりもプラットフォームごとのカスタマイズ手段が増えてきたので、ここでちょっと整理してみようと思います。 目次 他に忘れてる物があったら教えてください。 OnPlatform (XF 1.0 ~) DependecyService (XF 1.0 ~) …

【Xamarin.Forms 2.2】Embedded Platform-Specific Controls in Xamarin.Forms

Xamarin.Forms 2.2から Layout.Children や ContentView.Content に各プラットフォームのネイティブコントロールを埋め込めるようになり、Evolve 2016のキーノートでも紹介されました。 このフィーチャーを使うとCustomRendererよりもカジュアルにネイティブ…

【Xamarin.Forms 2.3プレビュー】Xamarin.Forms Themesを試そうとしたらまだ使えなかったので代わりにMerged Dictionaryの解説する

この記事はThemesの話のようでありながら、その実Xamarin.Forms版Merged Dictionaryの話です。 Xamarin.Forms Themes はEvolve 2016のキーノートで紹介された新機能の1つ、その目標は「デフォルトで美しいUIを提供すること」です。 Live from Evolve: Faster…

【Evolve 2016】Xamarin.Forms Previewerを試してみた!

Xamarin Evolve 2016のキーノートで遂に来ました! 念願のXAMLプレビューが!Xamarin.Formsに! 呼称は Xamarin.Forms Previewer だそうです。 というわけで早速試してみた様子がこちら XAML Previewer動いたよん❤️ pic.twitter.com/Qtx9V7CKO1— Xamarin.For…

Xamarin.Forms向けのMap機能拡張ライブラリを作ってます

https://github.com/P3PPP/MapExtensions コンセプトはXamarin.Forms 2.1.0で追加されたEffectsを利用して、Mapコントロールを継承することなく機能を追加するというもの。 つまり、従来のカスタムMapにも適用可能。 NuGetにもすでに上がってます。 https://…

【Xamarin.Forms 2.2.0(プレビュー)】UWP Maps

Xamarin.Forms 2.2.0からUWPでもXamarin.Forms.Mapsがサポートされます。 (っていうか今まで無かったんだ...) ざっくりとした使い方 他のプラットフォームと同様、 Xamarin.Forms.Forms.Init() の直後に Xamarin.FormsMaps.Init() を呼ぶ必要があります。 UW…

【Xamarin.Forms 2.2.0(プレビュー)】CarouselView

Xamarin.Forms 2.2.0 から CarouselView クラスが追加されます。 CarouselView は従来の CarouselPage を置き換える物で、CarouselPageは将来的に非推奨となります。 サンプル 基本的な使い方は ListView に似ています。しかし、DataTemplateの中身を Cellで…

【Xamarin.Forms】BindableProperty.Create() non-generic版のコードスニペット

以前、BindablePropertyを楽に作るコードスニペットを公開しました。 その中で使っていたBindableProperty.Create()のgeneric版がobsolete化したので、新しくnon-generic版のスニペットを公開します。 詳細な登録手順はgeneric版の記事を合わせてご参照くだ…

【Xamarin.Forms 2.2.0(プレビュー)】Marginプロパティ

Xamarin.Forms 2.2.0 から View クラスに Margin プロパティが追加されます。 複雑なレイアウトが今までより平易に書けるようになりますね。 (ずっと来ないのでパフォーマンス的に厳しいのかと思ってまいした) サンプル public App() { MainPage = new Conte…

Plugins for Xamarinを作ろう!

前置き Build 2016での発表から全ての開発者がVisual StudioでXamarinを利用できるようになり、アプリのみならずクロスプラットフォームなライブラリ開発も行いやすくなりました。 という訳で今回はPlugins for XamarinのテンプレートからNuGetパッケージを…

Build 2016とXamarin.Forms

Build 2016で 超!エキサイティン!! な発表がありました、なんとVisual Studioの全エディション(Community含む)にXamarinライセンスが無料で付くようになりました。 さらに、諸々のSDKがオープンソースになります。 In addition to these important steps, we…

Xamarin買収でXamarin.Formsが今後どうなるか考えてみる

結構今更なタイミングではありますがXamarin.Formsが今後どうなるかつらつらと考えてみました。 総評としては「UIデザイナが追加されたら様子見してた人達も突入してもOK」といったところでしょうか。 思いつくパターン 強化される MSの圧倒的リソースが投入…

【Xamarin.Forms】Effectsを使ったトリック 1

Xamarin.Forms 2.1.0 がリリースされたのでEffectを利用したトリックを解説します。 今回は Xamarin.Forms.Maps.Map (にアタッチしたBehavior)に地図のタップイベントを生やすというものです。 同様のことがカスタムMapクラス&カスタムRendererで実現できま…

【ソース公開】Xamarin.Forms製のAED検索アプリ、iOS版もリリースしました!

Android版に続き、Xamarin.Forms製アプリ「AEDオープンデータ検索」のiOS版をリリースしました! iOS版のコードも公開中のGitHubリポジトリに含まれていますよ! https://github.com/P3PPP/XFAedSearch 主な機能 近くにあるAEDを地図に表示します。 AED情報…

Xamarin.Forms.Mapsのバグを報告しようとしたら既にチケット上がってた

Xamarin.Forms.Maps.Mapのバグを発見しました。 AED検索アプリ作ってる途中で見つけた Xamarin.Forms.Maps のバグ、再現プロジェクト作って報告しようとしたら既に同様のチケットがあった。https://t.co/mYshXKozr4— たまにXamarin.Forms解説マン (@ticktack…

【ソース公開】Xamarin.Forms製のアプリをリリースしました (Android版)

先日、Xamarin.Forms製のAED検索アプリをGoogle Playストアにリリースしました。(iOS版は申請作業中) AEDオープンデータ検索 ついでにソースコードもGitHubで公開してます。(公開事例ですよー!) https://github.com/P3PPP/XFAedSearch 主な機能 近くにあるA…

Xamarin.Formsで諦めたこと(全画面コンテンツとNavigationBar)

iOSの「マップ」のように、コンテンツを大きく見せるため、画面をタップするとナビゲーションバー(Xamarin.Formsではこの表記)が引っ込むアプリがありますね? 例(iOSの「マップ」アプリ) NavigationPage.SetHasNavigationBar() でナビゲーションバーの有無…

【Xamarin.Forms】RelativeLayoutで中央に配置する

RelativeLayout の子要素に XConstraint , YConstraint Attached Property をセットすることでレイアウト位置を調整できます。 これはXY座標、つまり左上原点の指定となるため中央に配置するには一手間必要です。(AbsoluteLayoutの場合はいい感じに中央配置…

Xamarin.FormsでTextBlockのような事をする

テキストの一部だけ色やフォントサイズを変えたい時、WPFならTextBlockを使いますね? Xamarin.Formsでは Label.FormattedText で実現できます。 サンプル XAMLで書くとこんな感じ <Label> <Label.FormattedText> <FormattedString> <Span Text="名前:" ForegroundColor="Gray"/> <Span Text="あべなな" FontSize="Large" ForegroundColor="Maroon"/> <Span Text=" さん"/> </span></span></span></formattedstring></label.formattedtext></label>

Effectを使ってAndroidのMapViewからボタンを消す

Xamarin.Forms.Maps.Map コントロールを使用する際に現在位置表示、ズーム機能をONにしていると、Android版では地図上にボタンが表示されます。(iOSでは表示されない) iOSと揃えたい、デザインが他と馴染まないので自前で用意したいという場合は邪魔になるの…

NControlを使った汎用的なアイコンボタンのサンプル

こんな感じになるやつ 元々の線や塗りの色を変更できてアイコンに使いやすい。 ソース

NControlでもSVG

以前、NGraphicsでSVGが読み込めるようになったとお伝えしました。 それに伴い、内部でNGraphicsを使っているNControlでもSVGを読み込み&描画できるようになった訳なんですが、何も考えないで使うとちょっと悲しい事になるので解説を。 まずは特に工夫せず…

【Xamarin.Forms 2.1.0(プレビュー)】Effects

Xamarin.Forms 2.1.0 で Effects という新しい概念が追加される予定です。 (個人的な感想として、BehaiviorsやStylesの概念をCutstomRendererに持ち込んだ物がEffectsと捉えるとしっくりきます。) 「Buttonコントロールに枠線を付けたい」といった場合、従来…

【Xamarin.Forms 2.1.0(プレビュー)】DataTemplateSelector

Xamarin.Forms 2.1.0 で DataTemplateSelector が追加される予定です。 DataTemplateSelector を簡単に説明すると 「条件に応じたDataTemplateを返すDataTemplate」 です。 サンプル サンプルとして、各セルのデータ型に合わせたテンプレートを返すDataTempl…

【Xamarin.Forms 2.1.0(プレビュー)】BindableProperty.Create()

Xamarin.Forms 2.1.0で BindableProperty.Create() のジェネリック版が廃止予定となります。 使っている人は今のうちに修正しておいた方が良いかも。

【Xamarin.Forms 2.1.0(プレビュー)】HasUnevenRows dynamic sizing support

ListView.HasUnevenRows = true の場合、Cellのサイズを動的に変更できるようになります。 Androidでは元々動的にサイズ変更されてましたが、今回の変更で Cell.ForceUpdateSize() を呼ぶとサイズが更新される仕様になります。 「プラットフォームによっては…

【Xamarin.Forms 2.1.0(プレビュー)】ControlTemplate

Xamarin.Forms 2.1.0 で ControlTemplate が追加される予定です。 Xamarin.Forms 2.1.0-pre2 Released - Xamarin Forums ControlTemplate は次のクラスで使用可能です。 ContentPage ContentView TemplatedPage TemplatedView TemplatedPage、TemplatedView …

「NGraphics」がSVGを読み込めるようになりました

以前このブログで紹介した「NGraphics」がバージョンアップしてSVGを扱えるようになってました。 Xamarinでも使えるクロスプラットフォームなベクタグラフィクスライブラリ 「NGrapchics」 - ぴーさんログ という訳で早速使い方を確認してみましょう。表示す…