shuhelohelo’s blog

Xamarin.Forms多めです.

Xamarin.Forms

Xamarin.FormsでLight Theme, Dark Themeに応じてスタイルを切り替える

Experimentalですが,OSのLightテーマ,Darkテーマの切り替えに応じてUIの見た目を切り替える仕組みが提供されています. それがOnAppThemeマークアップ拡張です. 以下のように記述することで,OSのLightテーマ,Darkテーマに応じて,それぞれに指定した値が適用さ…

Xamarin.FormsのDynamicResource

docs.microsoft.com www.youtube.com アプリケーション内で使用する値やStyleなどをResourceDictionaryに定義しておき,StaticResourceとして使用することはよくあります. <Color x:Key="PrimaryColor">#547799</Color> ... <Label TextColor="{StaticResource PrimaryColor}"/> このResourceの値はプログラム中で変更することができます. App.Current</label>…

Xamarin.FormsからCognitive ServiceのComputer Visionを使う

今回やりたいのは,カメラで撮影した画像からテキストを抽出するもの. 参考は, github.com アプリ内でカメラを使って,撮影し,画像データを取得するには. MontemagnoさんのMediaPluginを使っている. カメラの使い方(Android) カメラを使って画像を取得するため…

Xamarin.Google.Android.Material Version="1.0.0-rc1"を導入したときのEntryなどの挙動の違い

以下のサンプルアプリを実行したとき,Entryの見た目と挙動が違っていたので,どういう仕組なのか色々調べた結果. github.com どんな挙動かというと以下のとおり. Entryに背景色がついていて,focusが当たると色が変わる. これはVisual="Material"としただけで…

Xamarin.Forms.Visual.Materialでコントロールの見た目を変更する

docs.microsoft.com devblogs.microsoft.com iOSとAndroidで可能な限り同じマテリアルデザインの見た目に統一することができる. これまではそれぞれネイティブのコントロールをそのまま使っていたところを,見た目を統一できる,かつデザインを新し目のものに…

ShellのFlyoutのメニューの見た目を変更する.

FlyoutItemの各アイテムの背景色,フォントカラーなどを変更したい場合は以下のような定義をShell.Resources内に定義する. <Style ApplyToDerivedTypes="True" Class="FlyoutItemLayoutStyle" TargetType="Layout"> <Setter Property="HeightRequest" Value="44" /> <Setter TargetName="FlyoutItemLabel" Property="Label.FontSize" Value="16" /> </setter></setter>

Xamarin.Formsでソフトキーボードが表示されたときに他の表示要素が隠れてしまうのをなんとかしたい

参考 https://xamgirl.com/adjusting-elements-when-keyboard-shows-in-xamarin-forms ソフトキーボード表示時のデフォルトの動作 Entryにフォーカスが移動すると,ソフトウェアキーボードが表示されます. このとき,選択されたEntryが隠れないようにソフトウ…

Xamarin.Forms : Sharpnadoでドラッグアンドドロップ可能なリストを作成するメモ

github.com SharpnadoのGitHubリポジトリにあるサンプル動画でわかるように,このライブラリが提供する機能の一つとしてリスト状に表示した各アイテムをドラッグアンドドロップで位置を入れ替えることができるHorizontalListViewというコントロールがあります…

listview内のitem内のイベントをbindingで扱う方法

https://blog.verslu.is/xamarin/xamarin-forms-xamarin/databinding-scope-in-xamarin-forms/?utm_source=rss&utm_medium=rss&utm_campaign=databinding-scope-in-xamarin-forms MVVMパターンでアプリケーションを作っている場合,イベントに対する処理をVie…

Xamarin.Formsで共有プロジェクトに置いたフォントを使う

Xamarin.Forms 4.5からEmbedded Fontsというプレビュー版の機能があって,これはどういうものかというと,これまでフォントを追加する場合は各プラットフォームのプロジェクト内にフォントファイルを配置する必要がありましたが,フォントファイルを共有プロジ…

Xamarin.Formsでリング状にボタンを表示させる

UIのアニメーションについていくつか記事をかきました. shuhelohelo.hatenablog.com 今回作ったのはボタンを押すと,その周りに複数のボタンが表示される,たまに見るやつです. アニメーション自体はScaleTo,FadeTo,TranslateToの3つを組み合わせた簡単なもの…

Xamarin.Formsで下のレイヤーのコントロールを操作できるようにする

どういうことかというと,画面の表面に透明なレイヤーを設けて,そこにメッセージを重ねるといった表現をしたい場合,上(表)のレイヤーがユーザーの操作を拾うため,下のレイヤーのコントロールを操作できません. 例えば以下のようにテキストボックスやボタンを…

C#である値以上またはある値以下に変数の値を維持する

ある変数があって,それは例えばスクロールの位置だったり,増減する数値を格納されるものとする. で,ある値以上または以下に値が行かないようにしたい,つまり下限や上限を決めたいとする. このとき,値が変化するたびに発生するイベントを利用し,イベントハン…

Xamarin.FormsのLabelは色々できることを知った

docs.microsoft.com Labelに収まらない文字列を「...」で省略する3種類のTruncationがとても便利. <StackLayout> <Frame HorizontalOptions="Center" VerticalOptions="Center" WidthRequest="200"> <Label Text="何も指定しない場合は,テキストは折り返される." /> </Frame> <Frame HorizontalOptions="Center" VerticalOptions="Center" WidthRequest="200"> </frame></stacklayout>

Xamarin.Formsでコントロールの見た目をResourceDictionaryで指定する

CSSと同様に,コントロールの見た目を予め定義し,それを各コントロールに指定することで,見た目を変更することができます. 基本的にはResourceDictionaryにStyleとして定義して使用します. これによって同じ見た目の定義を1回行うだけで,同じ見た目のコントロ…

Xamarin.FormsでNavigationPageのナビゲーションバーの背景色や文字色を変更する

Setting the NavigationBar colors in&nbsp;Xamarin.Formstheconfuzedsourcecode.wordpress.com NavigationPageのBarBackgroundColorとBarTextColorというプロパティで変更することができます. 指定の方法は,C#であればApp.xaml.csでNavigationPageをインス…

Xamarin.FormsでAndroidのステータスバーを半透明にする

追記 この記事はNavigationPageを使う場合には有効だけれども,Shellを使う場合は有効ではない. ShellのNavigationBarの色を変更するには以下の記事にあるように,Android側のMainActivity.csでWindow.SetStatusBarColor(Android.Graphics.Color.Argb(255, 44,…

Xamarin.FormsでScaleとRotationの中心を設定する

Xamarin.Formsのコントロールには拡大・縮小,回転,フェードイン・アウトなど基本的なアニメーションのためのメソッドが用意されています. もちろん,Scale,Rotation,Opacityなどのプロパティの値を直接操作することもできます. shuhelohelo.hatenablog.com さて…

Xamarin.Formsで上下スクロールにあわせてナビゲーションバーを表示・非表示 Reactive Extensionsで

Xamarin.Formsで上下スクロールに合わせてナビゲーションバーを表示,非表示させる方法について書きました. shuhelohelo.hatenablog.com この記事ではフラグやスクロールの値を保持して,それらを使ってIf文で処理を分けて作りました. グローバル変数やIf文が…

Xamarin.Formsでフォントを追加,使用する

Xamarin.Formsでフォントを変更する手順は以下の公式ドキュメントのとおりです. docs.microsoft.com フォントを入手する 使いたいフォントのデータを取得します. 公式ドキュメントでは例としてGoogle Fontsを挙げています. fonts.google.com こちらから使い…

Xamarin.Formsの現時点でのExperimentalな機能リスト

Xamarin.Forms 4.6 pre1の時点でExperimentalな機能は以下のリンクで確認できます. docs.microsoft.com Shell_UWP_Experimental IndicatorView_Experimental SwipeView_Experimental CarouselView_Experimental MediaElement_Experimental StateTriggers_Exp…

Xamarin.Formsの名前付きフォントサイズと各プラットフォームのフォントサイズの対応関係

docs.microsoft.com メンバー iOS Android UWP Default 16 14 14 Micro 11 10 15.667 Small 13 14 18.667 Medium 16 17 22.667 Large 20 22 32 Body 17 16 14 Header 17 96 46 Title 28 24 24 Subtitle 22 16 20 Caption 12 12 12

Xamarin.Formsで上下スクロールにあわせてナビゲーションバーを表示・非表示

ShellやNavigationのナビゲーションバーを直接動かすことはできないので,Frameコントロールでナビゲーションバーにあたるものを配置して,ということです. さて,モバイルアプリは上下にスクロールして使うUIが多いです. 上部にナビゲーションバーがあって,そ…

Xamarin.FormsでNavigationPageのナビゲーションバーを非表示にする

各ページのContentPage要素の属性にNavigationPage.HasNavigationBar="False"を追加する.

Xamarin.Formsでプレビュー(Experimentalな)機能を使うためのフラグ指定

追記(2020/04/12 各プロジェクトにフラグをセットする必要はなく,App.xaml.csのコンストラクタに以下のように記述すればOkになりました. public App() { InitializeComponent(); Xamarin.Forms.Device.SetFlags(new List<string>() { "StateTriggers_Experimental", </string>…

Xamarin.FormsのShellのFlyoutItem,Tabについてメモ

Shellを使う準備については以下の記事を参照. shuhelohelo.hatenablog.com 上の記事とかぶる内容もある. 環境 Xamarin.Forms 4.5 アップデートによって使える機能,設定が異なるので注意. 例えばShellのPresentationMode属性はXamarin.Forms 4.3にはなかった…

Xamarin.Formsの画面遷移のアニメーションの種類

Xamrin.Formsの画面遷移にはページ遷移とモーダルページの表示がある. ページ遷移 ページ遷移は以下のように記述する. private async void Button_Clicked_1(object sender, EventArgs e) { await Navigation.PushAsync(new SecondPage()); } ページ遷移のア…

Xamarin.Formsでオーバーレイしてダイアログ(というかページ)を表示させるにはどうしたらいいの?

例1:ライブラリ無しでピュアなXamarin.Formsで実現する 以下の例ではライブラリを使用せずに,PCLで,XamlとC#で,ドノーマルのXamarin.Formsでカスタムダイアログ,カスタムメッセージボックスを表示させている. winstongubantes.blogspot.com 手法としては,ダ…

Xamarin.FormsのVisualStateManagerについてのメモ

VisualStateManager docs.microsoft.com Visual State Manager(VSM)はコントロールの見た目を予め数種類定義しておき,それを切り替えることができるようにする機能です. VSMにはデフォルトの定義があり,それはCommonStatesというグループ名で定義されている.…

Xamarin.FormsでSyncfusionのコントロールを使う

Syncfusionはアプリケーションのための様々なコンポーネントを提供している企業です. .NETだけでなくJavaScriptやflutter,Vue,Reactなど多くのプラットフォームのコントロールを取り揃えています. おしゃれなコントロールを作ることはデザイン的にも実装技術…