{"id":20266309,"url":"https://github.com/muak/aiforms.settingsview","last_synced_at":"2025-05-16T06:04:21.139Z","repository":{"id":41973590,"uuid":"106317536","full_name":"muak/AiForms.SettingsView","owner":"muak","description":"SettingsView for Xamarin.Forms","archived":false,"fork":false,"pushed_at":"2023-02-12T07:52:27.000Z","size":6440,"stargazers_count":315,"open_issues_count":35,"forks_count":45,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-05-16T06:03:31.093Z","etag":null,"topics":["cell","recyclerview","reorder","settings","tableview","uitableview","xamarin","xamarin-forms"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/muak.png","metadata":{"files":{"readme":"README-ja.md","changelog":null,"contributing":"CONTRIBUTING-ja.md","funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"github":["muak"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2017-10-09T18:02:00.000Z","updated_at":"2025-04-15T07:15:21.000Z","dependencies_parsed_at":"2023-02-02T13:45:41.525Z","dependency_job_id":"d9f74cd6-a080-46f5-b677-87782b71242c","html_url":"https://github.com/muak/AiForms.SettingsView","commit_stats":{"total_commits":200,"total_committers":15,"mean_commits":"13.333333333333334","dds":0.605,"last_synced_commit":"9501e19654d49d29cc933cb49d36637dba129306"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muak%2FAiForms.SettingsView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muak%2FAiForms.SettingsView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muak%2FAiForms.SettingsView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muak%2FAiForms.SettingsView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/muak","download_url":"https://codeload.github.com/muak/AiForms.SettingsView/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254478186,"owners_count":22077675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cell","recyclerview","reorder","settings","tableview","uitableview","xamarin","xamarin-forms"],"created_at":"2024-11-14T12:08:10.132Z","updated_at":"2025-05-16T06:04:21.083Z","avatar_url":"https://github.com/muak.png","language":"C#","readme":"# SettingsView for Xamarin.Forms\n\n**[.NET MAUI版](https://github.com/muak/AiForms.Maui.SettingsView)**\n\nSettingViewはXamarin.Formsで使用できる設定に特化した柔軟なTableViewです。  \nAndroidとiOSに対応しています。\n\n![Build status](https://kamusoft.visualstudio.com/NugetCI/_apis/build/status/AiForms.SettingsView)\n\n## SettingsViewでできること（標準のTableViewとの違い）\n\n### 全般\n\n* Separatorの色の設定\n* 選択された時の色の指定\n* リストの先頭・最後へのスクロール\n\n### セクション\n\n* セクションごとの表示・非表示の設定\n* セクションのフッターの設定\n* ヘッダーとフッターの様々な設定\n* ヘッダーとフッターにFormsのViewを設定\n* セクション内にDataTemplateおよびDataTemplateSelectorを適用\n* セクション内でドラッグドラッグによる並べ替え\n\n### Cells\n\n* すべてのセルの外観などをSettingsViewで一括で指定\n* 個別のセルの設定（個別の設定は全体の設定より優先されます）\n* Cell右上にヒントテキストの設定\n* 全てのセルでのアイコン設定、それらすべてにメモリキャッシュを適用\n* アイコンの角丸設定\n* 様々な定義済みCellの使用\n* Xamarin.FormsのViewCell、それ以外の定義済みCellの使用\n\n\n\u003cimg src=\"images/iOS_SS.png\" height=\"1200\" /\u003e \u003cimg src=\"images/AndroidSS.png\" height=\"1200\" /\u003e\n\n### デモ動画\n\n[https://youtu.be/FTMOqNILxBE](https://youtu.be/FTMOqNILxBE)\n\n## 最小デバイス・バージョン等\n\niOS:iPhone5s,iPod touch6,iOS9.3  \nAndroid:version 5.1.1 (only FormsAppcompatActivity) / API22\n\n## Nugetでのインストール\n\n[https://www.nuget.org/packages/AiForms.SettingsView/](https://www.nuget.org/packages/AiForms.SettingsView/)\n\n```bash\nInstall-Package AiForms.SettingsView\n```\n\nNETStandardプロジェクトと各プラットフォームにインストールが必要です。\n\n### iOSの場合\n\niOSで使用する場合はAppDelegate.csに以下のようなコードを書く必要があります。\n\n```csharp\npublic override bool FinishedLaunching(UIApplication app, NSDictionary options) {\n    global::Xamarin.Forms.Forms.Init();\n    AiForms.Renderers.iOS.SettingsViewInit.Init(); //ここに書く\n\n    LoadApplication(new App());\n    return base.FinishedLaunching(app, options);\n}\n```\n\n### Androidの場合\n\nAndroidで使用する場合はMainActivity.csに以下のようなコードを書く必要があります。\n\n```csharp\nprotected override void OnCreate(Bundle bundle)\n{\n    base.OnCreate(bundle);\n\n    global::Xamarin.Forms.Forms.Init(this, bundle);\n    AiForms.Renderers.Droid.SettingsViewInit.Init(); // need to write here\n}\n```\n\n## Xamlでの使用方法\n\n```xml\n\u003cContentPage \n\txmlns=\"http://xamarin.com/schemas/2014/forms\" \n\txmlns:x=\"http://schemas.microsoft.com/winfx/2009/xaml\" \n\txmlns:sv=\"clr-namespace:AiForms.Renderers;assembly=SettingsView\"\n\tx:Class=\"Sample.Views.SettingsViewPage\"\u003e\n    \n\u003csv:SettingsView HasUnevenRows=\"true\"\u003e\n    \n    \u003csv:Section Title=\"Header1\" FooterText=\"Footer1\"\u003e\n        \u003csv:CommandCell IconSource=\"icon.png\" IconSize=\"60,60\" IconRadius=\"30\"\n            Title=\"Xam Xamarin\" Description=\"hoge@fuga.com\"\n            Command=\"{Binding ToProfileCommand}\" CommandParameter=\"{Binding Parameter}\"\n            KeepSelectedUntilBack=\"true\"            \n        /\u003e\n        \u003csv:ButtonCell Title=\"Toggle Section\" TitleColor=\"{StaticResource TitleTextColor}\"\n             TitleAlignment=\"Center\" Command=\"{Binding SectionToggleCommand}\" /\u003e\n        \u003csv:LabelCell Title=\"Label\" ValueText=\"value\" /\u003e\n        \u003csv:SwitchCell Title=\"Switch\" On=\"true\" \n            Description=\"This is description.\" /\u003e\n        \u003csv:CheckboxCell Title=\"Checkbox\" Checked=\"true\" /\u003e\n    \u003c/sv:Section\u003e\n\n    \u003csv:Section Title=\"Header2\" FooterText=\"Footer2\" IsVisible=\"{Binding SctionIsVisible}\"\u003e\n        \u003csv:PickerCell Title=\"Favorites\" ItemsSource=\"{Binding ItemsSource}\" DisplayMember=\"Name\" MaxSelectedNumber=\"3\" \n        SelectedItems=\"{Binding SelectedItems}\" KeepSelectedUntilBack=\"true\" PageTitle=\"select 3 items\" /\u003e\n        \u003csv:NumberPickerCell Title=\"NumberPicker\" Min=\"0\" Max=\"99\" Number=\"15\" PickerTitle=\"Select number\" /\u003e\n        \u003csv:TimePickerCell Title=\"TimePicker\" Format=\"HH:mm\" Time=\"15:30\" PickerTitle=\"Select time\" /\u003e\n        \u003csv:DatePickerCell Title=\"DatePicker\" Format=\"yyyy/MM/dd (ddd)\" Date=\"2017/11/11\" MinimumDate=\"2015/1/1\" MaximumDate=\"2018/12/15\" TodayText=\"Today's date\"/\u003e\n        \u003csv:EntryCell Title=\"EntryCell\" ValueText=\"{Binding InputText.Value}\" Placeholder=\"Input text\" Keyboard=\"Email\" TextAlignment=\"End\" HintText=\"{Binding InputError.Value}\" /\u003e\n    \u003c/sv:Section\u003e\n    \n\u003c/sv:SettingsView\u003e\n\u003c/ContentPage\u003e\n```\nSettingsViewのプロパティ設定はApp.xamlに記述した方が良いかもしれません。\n\n\n```xml\n\u003cApplication xmlns=\"http://xamarin.com/schemas/2014/forms\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2009/xaml\"\n             xmlns:sv=\"clr-namespace:AiForms.Renderers;assembly=SettingsView\"\n             x:Class=\"Sample.App\"\u003e\n    \u003cApplication.Resources\u003e\n        \u003cResourceDictionary\u003e\n            \u003cColor x:Key=\"AccentColor\"\u003e#FFBF00\u003c/Color\u003e\n            \u003cColor x:Key=\"DisabledColor\"\u003e#E6DAB9\u003c/Color\u003e\n            \u003cColor x:Key=\"TitleTextColor\"\u003e#CC9900\u003c/Color\u003e\n            \u003cColor x:Key=\"PaleBackColorPrimary\"\u003e#F2EFE6\u003c/Color\u003e\n            \u003cColor x:Key=\"PaleBackColorSecondary\"\u003e#F2EDDA\u003c/Color\u003e\n            \u003cColor x:Key=\"DeepTextColor\"\u003e#555555\u003c/Color\u003e\n            \u003cColor x:Key=\"NormalTextColor\"\u003e#666666\u003c/Color\u003e\n            \u003cColor x:Key=\"PaleTextColor\"\u003e#999999\u003c/Color\u003e\n            \u003cx:Double x:Key=\"BaseFontSize\"\u003e12\u003c/x:Double\u003e\n            \u003cx:Double x:Key=\"BaseFontSize+\"\u003e14\u003c/x:Double\u003e\n            \u003cx:Double x:Key=\"BaseFontSize++\"\u003e17\u003c/x:Double\u003e\n            \u003cx:Double x:Key=\"BaseFontSize-\"\u003e11\u003c/x:Double\u003e\n\n            \u003cStyle TargetType=\"sv:SettingsView\"\u003e\n                \u003cSetter Property=\"SeparatorColor\" Value=\"{StaticResource DisabledColor}\" /\u003e\n                \u003cSetter Property=\"BackgroundColor\" Value=\"{StaticResource PaleBackColorPrimary}\" /\u003e\n                \u003cSetter Property=\"HeaderBackgroundColor\" Value=\"{StaticResource PaleBackColorPrimary}\" /\u003e\n                \u003cSetter Property=\"CellBackgroundColor\" Value=\"{StaticResource AppBackground}\" /\u003e\n                \u003cSetter Property=\"CellTitleColor\" Value=\"{StaticResource DeepTextColor}\" /\u003e\n                \u003cSetter Property=\"CellValueTextColor\" Value=\"{StaticResource NormalTextColor}\" /\u003e\n                \u003cSetter Property=\"CellTitleFontSize\" Value=\"{StaticResource BaseFontSize++}\" /\u003e\n                \u003cSetter Property=\"CellValueTextFontSize\" Value=\"{StaticResource BaseFontSize}\" /\u003e\n                \u003cSetter Property=\"CellDescriptionColor\" Value=\"{StaticResource NormalTextColor}\" /\u003e\n                \u003cSetter Property=\"CellDescriptionFontSize\" Value=\"{StaticResource BaseFontSize-}\" /\u003e\n                \u003cSetter Property=\"CellAccentColor\" Value=\"{StaticResource AccentColor}\" /\u003e\n                \u003cSetter Property=\"SelectedColor\" Value=\"#50FFBF00\" /\u003e\n                \u003cSetter Property=\"HeaderTextColor\" Value=\"{StaticResource TitleTextColor}\" /\u003e\n                \u003cSetter Property=\"FooterFontSize\" Value=\"{StaticResource BaseFontSize-}\" /\u003e\n                \u003cSetter Property=\"FooterTextColor\" Value=\"{StaticResource PaleTextColor}\" /\u003e\n            \u003c/Style\u003e\n        \u003c/ResourceDictionary\u003e\n    \u003c/Application.Resources\u003e\n\u003c/Application\u003e\n\n```\n\nこんな感じに書くことでアプリ内の全てのSettingsViewを同じ設定にすることができます。\n\n## SettingsViewのプロパティ\n\n* BackgroundColor\n\t* View全体と領域外の背景色。ヘッダーやフッターの背景色も含みます。（Androidの場合はCellの背景色も）\n* SeparatorColor\n    * セパレータの線の色\n* SelectedColor\n    * 行（セル）を選択した時の背景色（AndroidはRipple色も含む）\n    \u003e AndroidのRipple効果はセルの背景色が設定されていない(透明の)場合は発動しません。\n* HeaderPadding\n* HeaderTextColor\n* HeaderFontSize\n* HeaderFontFamily\n* HeaderFontAttributes\n* HeaderTextVerticalAlign\n  \u003e HeaderHeightを設定した場合のみ有効です。\n* HeaderBackgroundColor\n* HeaderHeight\n    * ヘッダーに関する設定\n* FooterTextColor\n* FooterFontSize\n* FooterFontFamily\n* FooterFontAttributes\n* FooterBackgroundColor\n* FooterPadding\n    * フッターに関する設定\n* RowHeight\n\t* HasUnevenRowがfalseの時は、全行の高さ\n\t* それ以外は最小の行の高さ\n* HasUnevenRows\n\t* 行の高さを固定にするかどうか。デフォルトはfalse。true推奨。\n* CellTitleColor\n* CellTitleFontSize\n* CellTitleFontFamily\n* CellTitleFontAttributes\n* CellValueTextColor\n* CellValueTextFontSize\n* CellValueTextFontFamily\n* CellValueTextFontAttributes\n* CellDescriptionColor\n* CellDescriptionFontSize\n* CellDescriptionFontFamily\n* CellDescriptionFontAttributes\n* CellBackgroundColor\n* CellIconSize\n* CellIconRadius\n* CellAccentColor\n* CellHintTextColor\n* CellHintFontSize\n* CellHintFontFamily\n* CellHintFontAttributes\n    * 一括セル設定。どこがどのパーツかは後述のLayoutを参照。\n* UseDescriptionAsValue (Androidのみ有効)\n\t* Description項目をValue項目として使用するかどうか。\n\t* （一般的なAndroidアプリにありがちな設定値を下に書くレイアウトにするかどうか）\n\t* デフォルトはfalse（DescriptionとValueは個別に使う）\n* ShowSectionTopBottomBorder (Androidのみ有効)\n\t* 行の境界線をセクションの上と下にも表示するかどうか\n\t* （一般的なAndroidアプリでありがちな上と下は表示しないようにしないかどうか）\n\t* デフォルトはtrue（表示する）\n* ShowArrowIndicatorForAndroid\n  * CommandCell や PickerCell で 右端の矢印アイコンを Android でも表示するかどうか\n  * デフォルトは false (表示しない)\n* ScrollToTop\n* ScrollToBottom\n\t* このプロパティにtrueをセットすると先頭または末尾までスクロールします。\n\t* スクロール完了後は自動でfalseがセットされます。\n* VisibleContentHeight\n    * 表示されているコンテンツの高さです。この値を使って SettingsView 自体の高さを表示されているセルの合計の高さに合わせることができます。\n* ItemsSource\n* ItemTemplate\n    * SettingsView全体のDataTemplateを使用できます。SectionのDataTemplateと組み合わせることで単純な構造のセルを短いコードで実現できます。\n* TemplateStartIndex\n  * Templateの挿入を開始するインデックスを指定。デフォルトは0で最初からTemplateを適用します。1以上の値を指定すると、その位置からTemplateが挿入されるようになり、XAML等で挿入したデータはそのままの状態で残ります。任意の位置から繰り返しのセクションを設置した場合などに利用できます。\n\n### SettingsView の高さを内容の高さに合わせるには\n\nSettingsView の内容のセルの合計の高さが、親のViewよりも低い場合は、次のように HeightRequest と VisibleContentHeight を使って、自身の高さを内容の高さに合わせることができます。\n\n```xml\n\u003csv:SettingsView x:Name=\"settings\" HeightRequest=\"{Binding VisibleContentHeight,Source={x:Reference settings}}\"\u003e\n\u003c/sv:SettingsView\u003e\n```\n\n### SetttingsView自身のItemsSourceとItemTemplateの使用例\n\n```csharp\npublic class SomeViewModel\n{\n    public List\u003cMenuSection\u003e ItemsSource {get;set;}\n\n    public SomeViewModel()\n    {\n        ItemsSource = new List\u003cMenuSection\u003e{\n            new new MenuSection(\"Select number\",3){\n                new MenuItem{Title = \"3\",Value=3},\n                new MenuItem{Title = \"4\",Value=4},\n            },\n            new MenuSection(\"Select mode\",1){\n                new MenuItem{Title = \"A\",Value = 1},\n                new MenuItem{Title = \"B\",Value = 2}\n            }\n        }\n    }\n}\npublic class MenuItem\n{\n    public string Title { get; set; }\n    public int Value { get; set; }\n}\n\npublic class MenuSection:List\u003cMenuItem\u003e\n{\n    public string SectionTitle { get; set; }\n    public bool Selected { get;set; } // must implement INotifyPropertyChanged by some way\n\n    public MenuSection(string title,int initalSelectedValue)\n    {\n        SectionTitle = title;\n    }\n}\n```\n\n```xml\n\u003csv:SettingsView x:Name=\"Settings\" ItemsSource=\"{Binding ItemsSource}\"\u003e\n    \u003csv:SettingsView.ItemTemplate\u003e\n        \u003cDataTemplate\u003e\n            \u003csv:Section Title=\"{Binding SectionTitle}\" ItemsSource=\"{Binding}\" sv:RadioCell.SelectedValue=\"{Binding Selected}\"\u003e\n                \u003csv:Section.ItemTemplate\u003e\n                    \u003cDataTemplate\u003e\n                        \u003csv:RadioCell Title=\"{Binding Title}\" Value=\"{Binding Value}\" /\u003e\n                    \u003c/DataTemplate\u003e\n                \u003c/sv:Section.ItemTemplate\u003e\n            \u003c/sv:Section\u003e\n        \u003c/DataTemplate\u003e\n    \u003c/sv:SettingsView.ItemTemplate\u003e\n\u003c/sv:SettingsView\u003e\n```\n\n## SettingsViewのメソッド\n\n* ClearCache (static)\n\t* 全ての画像メモリキャッシュをクリアする\n\n## Section プロパティ\n\n* Title\n\t* セクションのヘッダー文字列。Xamarin.FormsのTableSectionと同じです。\n* FooterText\n\t* セクションのフッター文字列。\n* IsVisible\n\t* セクションを表示するかどうか。\n* HeaderHeight\n\t* セクションのヘッダーの個別の高さを指定します。\n\t* SettingsViewのHeaderHeightよりも優先されます。\n* ItemsSource\n\t* DataTemplateのソースを指定します。\n* ItemTemplate\n\t* DataTemplateを指定します。\n* TemplateStartIndex\n  * Templateの挿入を開始するインデックスを指定。デフォルトは0で最初からTemplateを適用します。1以上の値を指定すると、その位置からTemplateが挿入されるようになり、XAML等で挿入したデータはそのままの状態で残ります。任意の位置から繰り返しの Cell を設置した場合などに利用できます。\n* UseDragSort\n\t* セクション内のセルをDragDropで並べ替え可能にします。\n\t* UseDragSortがtrueのセクション間でのみ移動が可能です。\n\t* iOS11以降とそれ以外で外観が異なります。\n\t* iOS10以下は三本線のアイコンを掴むと移動でき、iOS11はセル全体を長押しすると移動できるようになります。\n* HeaderView\n* FooterView\n  * Header または Footer に Forms の View を指定します。\n  \u003e こちらを設定すると Title や FooterText も文字列は無効になります。\n  \u003e HeaderView と FooterView を使用するとセルの高さは自動になります。\n* FooterVisible\n  * FooterViewの表示・非表示を指定します。default true。\n\n### Section HeaderView FooterView XAMLからの使用例\n\n```xml\n\u003csv:Section\u003e\n    \u003csv:Section.HeaderView\u003e\n        \u003cStackLayout\u003e\n            \u003cLabel Text=\"Header\" /\u003e\n        \u003c/StackLayout\u003e\n    \u003c/sv:Section.HeaderView\u003e\n    \u003csv:Section.FooterView\u003e\n        \u003cLabel Text=\"{Binding FooterText}\" /\u003e\n    \u003c/sv:Section.FooterView\u003e\n\u003c/sv:Section\u003e\n```\n\n### SectionのItemsSourceとItemTemplateの使用例\n\n```csharp\npublic class SomeModel\n{\n   // 動的なリストを使う場合はObservableCollectionを使った方が良いです。\n   public ObservableCollection\u003cOption\u003e Options {get;set;}\n   public void SomeMethod()\n   {\n       Options = new ObservableCollection(GetServerData());\n   }\n}\npublic class Option\n{\n   public string Name {get;set;}\n   public string Address {get;set;}\n}\n```\n\n```xml\n\u003csv:Section ItemsSource=\"{Binding Options}\"\u003e\n    \u003csv:Section.ItemTemplate\u003e\n        \u003cDataTemplate\u003e\n            \u003csv:LabelCell Title=\"{Binding Name}\" Value=\"{Binding Address}\" /\u003e\n        \u003c/DataTemplate\u003e\n    \u003c/sv:Section.ItemTemplate\u003e\n\u003c/sv:Section\u003e\n```\n\n## Cells\n\n* [CellBase](#cellbase)\n* [LabelCell](#labelcell)\n* [CommandCell](#commandcell)\n* [ButtonCell](#buttoncell)\n* [SwitchCell](#switchcell)\n* [CheckboxCell](#checkboxcell)\n* [RadioCell](#radiocell)\n* [NumberPickerCell](#numberpickercell)\n* [TimePickerCell](#timepickercell)\n* [DatePickerCell](#datepickercell)\n* [TextPickerCell](#textpickercell)\n* [PickerCell](#pickercell)\n* [EntryCell](#entrycell)\n* [CustomCell](#customcell)\n\n## CellBase\n\n### 基本セルのレイアウト\n\n![cell layout](./images/cell_layout.png)\n\n* Icon\n    * アイコンを使わない場合はこの領域は非表示になります。\n* Description\n    * Descriptionを使わない場合はこの領域は非表示になります。\n* Accessory\n    * CheckboxCellやSwitchCellで使用されます。それ以外は非表示です。\n\n### プロパティ (全セル共通)\n\n* Title\n    * Title部分の文字列\n* TitleColor\n    * Title部分の文字色\n* TitleFontSize\n* TitleFontFamily\n* TitleFontAttributes\n    * Title部分のフォント設定\n* Description\n    * Description部分の文字列\n* DescriptionColor\n    * Description部分の文字色\n* DescriptionFontSize\n* DescriptionFontFamily\n* DescriptionFontAttributes\n    * Description部分のフォント設定\n* HintText\n    * Hint部分の文字列（何らかの情報やバリデーションのエラーなど、右上に表示）\n* HintTextColor\n    * Hint部分の文字色\n* HintFontSize\n* HintFontFamily\n* HintFontAttributes\n    * Hint部分のフォント設定\n* BackgroundColor\n    * セルの背景色\n* IconSource\n    * アイコンのImageSource\n* IconSize\n    * アイコンサイズ（幅,高さ指定）\n* IconRadius\n    * アイコンの角丸半径。\n* IsEnabled\n  * セルを有効にするかどうか。無効にした場合はセル全体の色が薄くなり操作を受け付けなくなります。\n* IsVisible\n  * セルの表示・非表示\n\n### メソッド\n\n* Reload\n  * セルを強制的にリロードします。CustomCell等で動的に内容を変更した後などに使用します。\n\n### SVGイメージを使用するには\n\nSvgImageSourceのnugetパッケージをインストールすればSVG画像を使用できるようになります。\n\nhttps://github.com/muak/SvgImageSource  \nhttps://www.nuget.org/packages/Xamarin.Forms.Svg/\n\n```bash\nInstall-Package Xamain.Forms.Svg -pre\n```\n\n## LabelCell\n\nテキスト表示専用のセルです。\n\n### Properties\n\n* ValueText\n    * 何らかの値を示す文字列（何に使っても問題ありません）\n* ValueTextColor\n    * ValueText部分の文字色\n* ValueTextFontSize\n* ValueTextFontFamily\n* ValueTextFontAttributes\n    * ValueText部分のフォント設定\n* IgnoreUseDescriptionAsValue\n\t* UseDescriptionAsValueの値がtrueだった場合、その設定を無視するかどうか。\n\t* 例えば全体としてはValueは下に置きたいが、あるセルだけは通常のレイアウトで使用したい時などに使います。\n\n## CommandCell\n\nタップした時のコマンドを指定できるLabelCellです。\n例えばページ遷移の時などに使用します。\n\n### Properties\n\n* Command\n* CommandParameter\n* KeepSelectedUntilBack\n\t* タップして次のページに遷移した時、遷移先ページから戻ってくるまで選択状態をそのままにしておくかの設定\n\t* trueの場合は選択状態をキープして、falseの場合は選択はすぐに解除されます。\n* HideArrowIndicator\n  * 右端の矢印アイコンを非表示にします。\n  * 親のShowArrowIndicatorForAndroidがtrueの場合でもこちらのプロパティが優先されます。\n\n他はLabelCellと同じです。\n\n## ButtonCell\n\nボタンのようにタップするとコマンドを実行するだけのシンプルなセルです。\nCommandCellとの違いは以下のとおりです。\n* 右端にインジケーターが表示されない(iOS)\n* ValueやDescriptioが使用不可\n* ButtonCellは文字の水平位置を指定可能\n\n### Properties\n\n* TitleAlignment\n    * ボタンタイトルの水平位置属性\n* Command\n* CommandParameter\n\n\n## SwitchCell\n\nSwitchを備えたLabelCellです。\n\n### Properties\n\n* On\n    * Switchのオンオフ。OnがtrueでOffがfalse。 \n* AccentColor\n    * Switchのアクセントカラー。背景色やつまみ部分の色などプラットフォームによって異なる。\n\n## CheckboxCell\n\nCheckboxを備えたLabelCellです。\n\n### Properties\n\n* Checked\n    * Checkのオンオフ。OnがtrueでOffがfalse。\n* AccentColor\n    * Checkboxのアクセントカラー。（枠や背景色） \n\n## RadioCell\n\nセクション単位またはSettingsView全体で1つのアイテムを選択するCellです。PickerCellと違い選択項目を1階層目に配置する場合などに使用します。\n\n### Properties\n\n* Value\n    * セルに対応する選択候補値。\n* AccentColor\n    * チェックマークの色。\n\n### 添付プロパティ\n\n* SelectedValue\n    * 現在の選択値。\n    * このプロパティをSectionに設定した場合は、そのSectionから1つだけ選択できるようになり、SettingsView自体に設定した場合は、View全体から1つだけ選択できるようになります。\n    \u003e SectionとSettingsViewの両方に設定して動作させることはできません。両方に設定した場合はSection側が使用されます。\n\n### XAML サンプル\n\n#### セクション単位\n\n```xml\n\u003csv:SettingsView\u003e\n    \u003csv:Section Title=\"Sound\" sv:RadioCell.SelectedValue=\"{Binding SelectedItem}\"\u003e\n        \u003csv:RadioCell Title=\"Sound1\" Value=\"{Binding Items[0]}\"\u003e\n        \u003csv:RadioCell Title=\"Sound2\" Value=\"{Binding Items[1]}\"\u003e\n    \u003c/sv:Section\u003e\n\u003c/sv:SettingsView\u003e\n```\n\n#### コントロール全体\n\n```xml\n\u003csv:SettingsView sv:RadioCell.SelectedValue=\"{Binding GlobalSelectedItem}\"\u003e\n    \u003csv:Section Title=\"Effect\"\u003e\n        \u003csv:RadioCell Title=\"Sound1\" Value=\"{Binding Items[0]}\"\u003e\n        \u003csv:RadioCell Title=\"Sound2\" Value=\"{Binding Items[1]}\"\u003e\n    \u003c/sv:Section\u003e\n    \u003csv:Section Title=\"Melody\"\u003e\n        \u003csv:RadioCell Title=\"Melody1\" Value=\"{Binding Items[2]}\"\u003e\n        \u003csv:RadioCell Title=\"Melody2\" Value=\"{Binding Items[3]}\"\u003e\n    \u003c/sv:Section\u003e\n\u003c/sv:SettingsView\u003e\n```\n\n## NumberPickerCell\n\nセルタップ時にNumberPickerを呼び出すことができるLabelCellです。\n\n### Properties\n\n* Number\n    * 現在の数値（default two way binding)\n* Min\n    * 最小値\n* Max\n    * 最大値\n* PickerTitle\n    * Pikerのタイトル文字列\n* SelectedCommand\n    * 数値を選択した時に発火させるCommand。\n* Unit\n  * 数値の単位文字列。\n\nValueTextは使用できません。\n\n## TimePickerCell\n\nセルタップ時にTimePickerを呼び出すことができるLabelCellです。\n\n### Properties\n\n* Time\n    * 現在選択中の時刻 (default two way binding)\n* Format\n    * 時刻の書式 (\"hh時mm分\"など)\n* PickerTitle\n    * Pikerのタイトル文字列\n\nValueTextは使用できません。\n\n## DatePickerCell\n\nセルタップ時にDatePickerを呼び出すことができるLabelCellです。\n\n### Properties\n\n* Date\n    * 現在選択中の日付 (default two way binding)\n* MinimumDate\n* MaximumDate\n* Format\n    * 日付の書式 (\"yyyy年MM月dd日 ddd曜日\"など)\n* TodayText\n\t* 今日の日付を選択するためのボタンのタイトル文字列（iOSのみ）\n    * 空の場合はボタン自体が非表示になります。\n* InitialDate\n  * Dateがnullだった場合に、ピッカーの初期値として設定される日付\n* IsAndroidSpinnerStyle\n  * AndroidでカレンダーではなくスピナーUIを使用する場合にTrue\n* AndroidButtonColor\n  * Androidのダイアログのボタン文字色\n\nValueTextは使用できません。\n\n## TextPickerCell\n\nセルタップ時にテキストを選択できるピッカーを呼び出すことができるLabelCellです。\nNumberPickerCellをNumber以外に対応させたもので、データソースにListを設定できます。\n\n### Properties\n\n* Items\n\t* IListを実装したデータソース。\n\t* このプロパティには組み込みの型のList\\\u003cT\u003e等が設定できます。（List\\\u003cstring\u003e, List\\\u003cint\u003e,List\\\u003cdouble\u003e など）\n\t* ピッカーの表示テキストにはToString()の結果が使用されます。\n* SelectedItem\n\t* 選択したアイテム。 (two-way binding)\n* SelectedCommand\n    * アイテム選択時に発火するコマンド。\n* IsCircularPicker\n    * ピッカーのアイテムを循環させるかどうか。(Android のみ)\n    * デフォルト true\n\nValueTextは使用できません。\n\n## PickerCell\n\nセルタップ時に複数選択可能なピッカーを呼び出すことができるLabelCellです。\niOSではタップ時にページ遷移し遷移先ページでピッカーが表示されます。\nAndroidではタップ時にダイアログでピッカーが表示されます。\n\n### Properties\n\n* PageTitle\n    * ピッカーのタイトル文字列\n* ItemsSource\n    * IEnumerableを実装したPickerのDataSource（List\u003cT\u003eやObservableCollection\u003cT\u003eなど）\n    * nullを指定することはできません。\n* DisplayMember\n    * Pickerに選択肢として表示させるメンバー名（プロパティ名）。省略時はToStringの値が使用されます。\n* SubDisplayMember\n\t* Pickerに表示させる二番目のメンバー名（プロパティ名）。指定するとセルは2行表示となり、1行目にDisplayMemberが、2行目にSubDisplayMemberが表示されるようになります。\n* SelectionMode\n  * 複数選択か単一選択かのモードを Single / Multiple から選択。デフォルト Multiple。\n* SelectedItem\n  * 単一選択の場合の選択されたアイテム。\n* SelectedItems\n  * 複数選択の場合の選択されたアイテム。\n  * 選択したItemを保存するためのIList。ItemsSourceと同じ型のものを指定。\n  * 選択済み要素をあらかじめ設定する場合は、ItemsSourceの要素と同一インスタンスの要素にする必要があります。\n  * 指定する場合は必ずnullではなくインスタンス設定済みのものを指定する。\n* SelectedItemsOrderKey\n\t* 選択済みItemを文字列として表示する時のソートのキーとなるメンバー（プロパティ）名\n* SelectedCommand\n\t* 選択が完了した時に発火するコマンド\n\t* iOSの場合はピッカーページから戻る時、Androidの場合はダイアログのOKをタップした時に発火します。\n* MaxSelectedNumber\n    * 選択可能な最大数。\n\t* 0指定で無制限、1指定で単一選択モード（ラジオボタン的なやつ）、2以上は制限付きの複数選択となります。\n* KeepSelectedUntilBack\n\t* タップして次のページに遷移した時またはダイアログ表示時、戻ってくるまで選択状態をそのままにしておくかの設定\n\t* trueの場合は選択状態をキープして、falseの場合は選択はすぐに解除されます。\n* AccentColor\n    * Pickerのチェックマークの色\n* UseNaturalSort\n\t* 並べ替え方法にNaturalSortを使うかどうか。デフォルト false。\n\t* trueの場合、例えば通常 1,10,2,3,4 と並ぶところが 1,2,3,4,10 という並びになります。\n\t* 日本語以外の言語で使用する場合、誤動作する可能性があります。\n* UsePickToClose\n\t* 選択がMaxSelectedNumberに達したら自動的にPickerを閉じるかどうかを指定します。\n* UseAutoValueText\n\t* 通常は選択アイテムが自動でValueTextに表示されますが、このプロパティにfalseを指定すると自動表示が解除され、ValueTextを普通に使うことができるようになります。\n\n\n## EntryCell\n\n文字入力用のCellです。\nXamarin.Forms.EntryCellとは別物です。\n\n### Properties\n\n* ValueText\n    * 入力文字列 (default two way binding)\n* ValueTextColor\n    * 入力文字色\n* ValueTextFontSize\n* ValueTextFontFamily\n* ValueTextFontAttributes\n    * 入力文字列のフォント設定\n* MaxLength\n    * 最大文字列長\n* Keyboard\n    * キーボードの種類\n* Placeholder\n    * Placeholderの文字列\n* PlaceholderColor\n    * Placeholderの文字色\n* TextAlignment\n    * 入力文字列の水平位置属性\n* AccentColor\n    * 入力欄の下線の色（Androidのみ）\n* IsPassword\n    * パスワードなどのために入力文字を隠すかどうか。\n* CompletedCommand\n  * エンターによる文字入力の確定、またはフォーカス移動による確定時に発火するコマンド。\n\n### Methods\n\n* SetFocus\n  * フォーカスを設定します。\n\n## CustomCell\n\n真ん中の Title / ValueText / Description の部分を Forms View で自由に設定できるCellです。View部分はXAMLで指定することができます。\n基本的には CustomCell のサブクラスを作成し、それを利用する形で使用されることを想定しています。\n\n## Properties\n\n* ShowArrowIndicator\n  * セルの右端に矢印インジケータを表示するかどうか。\n  * true で iOS / Android に関わらず矢印を表示します。\n* IsSelectable\n  * 行を選択可能かどうか。true で Commandが発火するようになります。\n* IsMeasureOnce\n  * サイズ計算を1回だけ行うかどうか。デフォルト false。\n  * 高さが内容によって変わらないような場合にサイズ計算を省略することができます。\n* UseFullSize\n  * true で自由領域を範囲を余白なしで目一杯使うようにします。\n  \u003e 有効にした場合、アイコンの設定は無効になります。\n* Command\n* CommandParameter\n* LongCommand\n  * 長押し時に発火するコマンド\n* KeepSelectedUntilBack\n\t* タップして次のページに遷移した時、遷移先ページから戻ってくるまで選択状態をそのままにしておくかの設定\n\t* trueの場合は選択状態をキープして、falseの場合は選択はすぐに解除されます。\n\n### CustomCellの使用例\n\n* https://github.com/muak/AiForms.SettingsView/tree/development/Sample/Sample/Views/Cells\n* https://github.com/muak/AiForms.SettingsView/blob/development/Sample/Sample/Views/CustomCellTest.xaml\n\n## Contribution\n\n私たちは、Xamarin.Forms.GoogleMaps への、あなたの貢献に大変感謝します。\n開発に参加して頂ける方は、[コントリビューション ガイドライン](CONTRIBUTING-ja.md) を読んで下さい。\n\n## Contributors\n\n* [codegrue](https://github.com/codegrue)\n* [cpraehaus](https://github.com/cpraehaus)\n* [dylanberry](https://github.com/dylanberry)\n* [RLittlesll](https://github.com/RLittlesII)\n* [ChaseFlorell](https://github.com/ChaseFlorell)\n* [OnTheFenceDevelopment](https://github.com/OnTheFenceDevelopment)\n* [SiNeumann](https://github.com/SiNeumann)\n* [akaegi](https://github.com/akaegi)\n\n\n## 謝辞\n\nNaturalSortの実装に以下のソースを利用させていただきました。\nありがとうございました。\n\n* NaturalComparer\n\t* https://qiita.com/tomochan154/items/1a3048f2cd9755233b4f\n    * https://github.com/tomochan154/toy-box/blob/master/NaturalComparer.cs\n\n## 寄付\n\n開発継続のため、寄付を募集しています。\n\n寄付をいただけるとやる気が非常にアップしますので、どうかよろしくお願いいたします🙇\n\n* [PayPalMe](https://paypal.me/kamusoftJP?locale.x=ja_JP)\n\n## スポンサー\n\nスポンサーも募集しています。\nこちらはサブスクリプション制になります。\n\n* [GitHub Sponsors](https://github.com/sponsors/muak)\n\n\n## License\n\nMIT Licensed.\n\n[Material design icons](https://github.com/google/material-design-icons) - [Apache License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt)\n","funding_links":["https://github.com/sponsors/muak","https://paypal.me/kamusoftJP?locale.x=ja_JP"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuak%2Faiforms.settingsview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmuak%2Faiforms.settingsview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuak%2Faiforms.settingsview/lists"}