Xamarin.Forms のカスタム レンダラー
Xamarin.Forms ユーザー インターフェイスは、ターゲット プラットフォームのネイティブ コントロールを使用してレンダリングされるため、Xamarin.Forms アプリケーションでは各プラットフォームに適した外観を維持できます。 カスタム レンダラーにより、開発者はこのプロセスをオーバーライドして、各プラットフォーム上で Xamarin.Forms コントロールの外観とビヘイビアーをカスタマイズできるようになります。
カスタム レンダラーの概要
カスタム レンダラーにより、Xamarin.Forms コントロールの外観とビヘイビアーをカスタマイズするための強力な方法が提供されます。 それらは、スタイルに関する小さな変更や、洗練されたプラットフォーム固有のレイアウトおよびビヘイビアーのカスタマイズのために使用できます。 この記事では、カスタム レンダラーの概要を示し、カスタム レンダラーを作成するプロセスについて説明します。
レンダラーの基本クラスおよびネイティブ コントロール
すべての Xamarin.Forms コントロールには、ネイティブ コントロールのインスタンスを作成する各プラットフォーム用のレンダラーが付属しています。 この記事では、Xamarin.Forms のページ、レイアウト、ビュー、およびセルのそれぞれを実装するレンダラーとネイティブ コントロールのクラスの一覧を示します。
エントリのカスタマイズ
Xamarin.Forms の Entry
コントロールによって、1 行のテキストを編集対象にできます。 この記事では、Entry
コントロール用のカスタム レンダラーを作成する方法を示します。これにより、開発者は既定のネイティブ レンダリングを、各自のプラットフォームに固有のカスタマイズでオーバーライドできるようになります。
コンテンツ ページのカスタマイズ
ContentPage
は、単一ビューを表示し、画面の大部分を占めるビジュアル要素です。 この記事では、ContentPage
ページ用のカスタム レンダラーを作成する方法を示します。これにより、開発者は既定のネイティブ レンダリングを、各自のプラットフォームに固有のカスタマイズでオーバーライドできるようになります。
マップ ピンのカスタマイズ
Xamarin.Forms.Maps には、プラットフォームごとのネイティブ マップ API を使ったマップ表示用の抽象化がクロスプラットフォームで用意されていて、高速で使い慣れたマップのユーザー エクスペリエンスが提供されます。 このトピックでは、Map
コントロール用のカスタム レンダラーを作成する方法を示します。これにより、開発者は既定のネイティブ レンダリングを、各自のプラットフォームに固有のカスタマイズでオーバーライドできるようになります。
ListView のカスタマイズ
Xamarin.Forms の ListView
は、データのコレクションを縦方向の一覧として表示するビューです。 この記事では、プラットフォーム固有のリスト コントロールとネイティブのセルのレイアウトをカプセル化するカスタム レンダラーを作成し、ネイティブ リスト コントロールのパフォーマンスをより厳密に制御する方法を示します。
ViewCell のカスタマイズ
Xamarin.Forms の ViewCell
は、ListView
または TableView
に追加できるセルで、これには開発者が定義したビューが含まれます。 この記事では、Xamarin.Forms の ListView
コントロール内でホストされる、ViewCell
用のカスタム レンダラーを作成する方法を示します。 これにより、ListView
のスクロール中に Xamarin.Forms のレイアウトの計算が繰り返し呼び出されることが回避されます。
WebView のカスタマイズ
Xamarin.Forms の WebView
は、アプリに Web コンテンツと HTML コンテンツを表示するビューです。 この記事では、JavaScript から C# コードを呼び出せるように WebView
を拡張するカスタム レンダラーを作成する方法について説明します。
ページの実装
Xamarin.Forms のカスタム ユーザー インターフェイス コントロールは、View
クラスから派生させる必要があります。これは画面上にレイアウトとコントロールを配置するために使われます。 この記事では、デバイスのカメラからビデオ ストリームのプレビューを表示するために使う、Xamarin.Forms のカスタム コントロール用のカスタム レンダラーを作成する方法を示します。