Maui: 【仕様】TabView

䜜成日 2020幎06月18日  Â·  12コメント  Â·  ゜ヌス: dotnet/maui

TabView

シェルを䜿甚しおタブを䜜成できたす。 ただし、特定のセクション内にネストされたタブが必芁な堎合はどうなりたすか䟋グリッド、_各タブを完党にカスタマむズしたい堎合はどうなりたすか_。 このような堎合、これたでのずころカスタムレンダラヌが必芁になりたす...

TabViewは、䞀連のタブずそれぞれのコンテンツを衚瀺する方法です。 TabViewは、ナヌザヌにほずんどすべおをカスタマむズする機胜を提䟛しながら、耇数のコンテンツを衚瀺するのに圹立ちたす。

tabview

泚 TabViewは、レむアりトを䜿甚した配眮、スタむル蚭定、䞊げられたボタンのような䞍均䞀なスタむル蚭定など、ネむティブタブが制限に達したずきに匕き継ぐクロスプラットフォヌムビュヌです。

API

次に、TabViewのプロパティ、むベント、および芖芚的状態のリスト。

プロパティ

TabViewのプロパティ

| プロパティ| タむプ| 説明|
| ---------- |-------------|-------------|
| TabItemsSource | IEnumerable | TabViewのタブアむテムを生成するために䜿甚されるコレクション。 |
| TabViewItemDataTemplate | DataTemplate | タブビュヌがタブアむテムのヘッダヌを生成するために䜿甚するテンプレヌト。 |
| TabContentDataTemplate | DataTemplate | タブビュヌがタブアむテムのコンテンツを生成するために䜿甚するテンプレヌト。 |
| IsCyclical | ブヌル| 呚期的なタブナビゲヌションを有効たたは無効にしたす。 |
| IsLazy | ブヌル| レむゞヌタブの読み蟌みを有効たたは無効にしたす。 |
| SelectedIndex | Int | 珟圚遞択されおいるタブを取埗たたは蚭定したす。 デフォルトは0です。
| TabStripPlacement | TabStripPlacement | TabStripの配眮䞊たたは䞋。 |
| TabStripBackground | ブラシ| TabStripの背景。 |
| TabIndicatorBrush | ブラシ| TabIndicatorの背景。 |
| TabIndicatorHeight | ダブル| TabIndicatorの高さ。 |
| TabIndicatorWidth | ダブル| TabIndicatorの幅。 |
| TabIndicatorPlacement | TabIndicatorPlacement | |
| TabIndicatorView | 衚瀺| TabIndicatorのコンテンツ。 |
| TabContentBackground | ブラシ| タブコンテンツの背景。 |
| TabContentHeight | ダブル| タブコンテンツの高さ。 |
| TabStripHeight | ダブル| TabStripの高さ。 |
| TabContentHeight | ダブル| タブコンテンツの高さ。 |
| HasTabStripShadow | ブヌル| TabStripシャドり効果を衚瀺たたは非衚瀺にしたす。 |
| IsTabTransitionEnabled | ブヌル| タブ間の遷移を有効たたは無効にしたす。 |
| IsSwipeEnabled | ブヌル| スワむプゞェスチャを有効たたは無効にしたす。 |

TabViewItemのプロパティ

| プロパティ| タむプ| 説明|
| ---------- |-------------|-------------|
| テキスト| 文字列| タブのテキスト。 |
| TextColor | 色| タブのテキストの色。 |
| TextColorSelected | 色| 遞択したタブのテキストの色。 |
| FontSize | FontSize | タブテキストで䜿甚されるフォントサむズ。 |
| FontSizeSelected | FontSize | 遞択したタブで䜿甚されおいるフォントサむズ。 |
| FontFamily | 文字列| タブで䜿甚されるフォントファミリ。 |
| FontFamilySelected | 文字列| 遞択したタブで䜿甚されおいるフォントファミリ。 |
| FontAttributes | FontAttributes | タブで䜿甚されるフォント属性。 |
| FontAttributesSelected | FontAttributes | 遞択したタブで䜿甚されるフォント属性。 |
| アむコン| ImageSource | タブのアむコン。 |
| IconSelected | ImageSource | 遞択したタブのアむコンずしお䜿甚されるImageSource。 |
| コンテンツ| 衚瀺| タブの内容。 ビュヌであり、コンテンツずしお䜕でも䜿甚できたす。 |
| BadgeText | ブヌル| タブで䜿甚されるバッゞテキスト。 |
| BadgeTextColor | 色| タブで䜿甚されるバッゞのテキストの色。 |
| BadgeTextColorSelected | 色| 遞択したタブで䜿甚されおいるバッゞのテキストの色。 |
| BadgeBackgroundColor | 色| タブで䜿甚されるバッゞの色。 |
| BadgeBackgroundColorSelected | 色| 遞択したタブで䜿甚されおいるバッゞの色。 |
| IsSelected | ブヌル| タブが遞択されおいるかどうかを瀺すブヌル倀。 |
| TapCommand | ICommand | ナヌザヌがタブをタップしたずきに実行されるコマンド。 |
| TapCommandParameter | オブゞェクト| tapコマンドパラメヌタ。 |

むベント

TabViewむベント

| むベント| 説明|
| ---------- |-------------|
| SelectionChanged | 遞択したタブが倉曎されたずきに発生するむベント。 |
| スクロヌル| タブ間をスワむプするず発生するむベント。 |

TabViewItemむベント

| むベント| 説明|
| ---------- |-------------|
| TabTapped | ナヌザヌがタブをタップしたずきに発生するむベント。 |

VisualStates

Visual State ManagerVSMは、コヌドからナヌザヌむンタヌフェむスに芖芚的な倉曎を加えるための構造化された方法を提䟛したす。
VSMは、芖芚的状態の抂念を導入しおいたす。 TabViewは、その基になる状態に応じお、いく぀かの異なる芖芚的倖芳を持぀こずができたす。

TabViewには、4぀の特定のVisualStateがありたす。

  • CurrentTabVisualState
  • NextTabVisualState
  • 以前のTabVisualState
  • DefaultTabVisualState

シナリオ

䞀般的なシナリオをカバヌするいく぀かのサンプルを芋おみたしょう。

基本タブ

基本的な䟋を芋おみたしょう。

<TabView 
    TabStripPlacement="Bottom"
    TabStripBackgroundColor="Blue">
    <TabViewItem
        Icon="triangle.png"
        Text="Tab 1">
        <Grid 
            BackgroundColor="Gray">
            <Label
                HorizontalOptions="Center"
                VerticalOptions="Center"
                Text="TabContent1" />
        </Grid>
    </TabViewItem>
    <TabViewItem
        Icon="circle.png"
        Text="Tab 2">
        <Grid>
            <Label    
                HorizontalOptions="Center"
                VerticalOptions="Center"
                Text="TabContent2" />
        </Grid>
    </TabViewItem>
</TabView>

basic-tabs

TabItemsSource

TabItemsSource動的タブの䜿甚

<TabView
    TabItemsSource="{Binding Monkeys}"
    TabViewItemDataTemplate="{StaticResource TabViewItemTemplate}"
    TabContentDataTemplate="{StaticResource TabContentTemplate}" />

tabitemssource

カスタムタブ

各タブの倖芳はカスタマむズできたす。

<ControlTemplate
    x:Key="TabItemTemplate">
    <Grid>
    ...
    </Grid>
</ControlTemplate>

<TabView>
    <TabViewItem
        Text="Tab 1"
        ControlTemplate="{StaticResource TabItemTemplate}">
    </TabViewItem>
</TabView>

custom-tabs

埪環タブ

タブ間を呚期的にナビゲヌトしたすか

<TabView
    IsCyclical="True">
    ...
</TabView>

iscyclical

遅延読み蟌み

レむゞヌタブの読み蟌み

<TabView
    IsLazy="True">
    ...
</TabView>

lazy-tabs

タブ遷移ずTabViewItemアニメヌション

Xamarin.Formsアニメヌションを䜿甚しお、各タブ間の遷移をカスタマむズしたり、衚瀺たたは非衚瀺のずきにタブをアニメヌション化したり、衚瀺たたは非衚瀺のずきにバッゞをアニメヌション化したりするこずができたす。

<TabView>
    <TabView.TabTransition>
        <local:CustomTabTransition />
    </TabView.TabTransition>
    <TabViewItem
        Text="Tab 1">      
            <TabViewItem.TabAnimation>
                <local:CustomTabViewItemAnimation />
            </TabViewItem.TabAnimation>
        <Grid 
            BackgroundColor="LawnGreen">
            <Label
                HorizontalOptions="Center"
                VerticalOptions="Center"
                Text="TabContent1" />
        </Grid>
    </TabViewItem>
    ...
</TabView>

custom-tabs-animation

VisualStatesの䜿甚

さたざたな芖芚的状態を䜿甚しお、珟圚のタブ、次のタブなどをカスタマむズできたす。

<Grid>
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="TabViewStates">
            <VisualState x:Name="CurrentTab">
                <VisualState.Setters>
                    <Setter Property="Opacity" Value="1" />
                </VisualState.Setters>
            </VisualState>
            <VisualState x:Name="PreviousTab">
                <VisualState.Setters>
                    <Setter Property="Opacity" Value="0.7" />
                </VisualState.Setters>
            </VisualState>
            <VisualState x:Name="NextTab">
                <VisualState.Setters>
                    <Setter Property="Opacity" Value="0.7" />
                </VisualState.Setters>
            </VisualState>
            <VisualState x:Name="DefaultTab">
                <VisualState.Setters>
                    <Setter Property="Opacity" Value="0.9" />
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <Label Text="{Binding Index}" HorizontalOptions="Center" VerticalOptions="End" />
</Grid>

Cを䜿甚しおタブを䜜成する

XAMLたたはCを䜿甚しお、Xamarin.FormsでUIを䜜成できたす。 Cを䜿甚しおタブを䜜成する方法を芋おみたしょう。

var tabView = new Tabs
{
    TabStripPlacement = TabStripPlacement.Bottom,
    TabStripBackgroundColor = Color.Blue,
    TabStripHeight = 60,
    TabIndicatorColor = Color.Yellow,
    TabContentBackgroundColor = Color.Yellow
};

var tabViewItem1 = new TabViewItem
{
    Icon = "triangle.png",
    Text = "Tab 1",
    TextColor = Color.White,
    TextColorSelected = Color.Yellow,
};

var tabViewItem1Content = new Grid
{
    BackgroundColor = Color.Gray
};

var label1 = new Label
{
    HorizontalOptions = LayoutOptions.Center,
    VerticalOptions = LayoutOptions.Center,
    Text = "TabContent1"
};

tabViewItem1Content.Children.Add(label1);

tabViewItem1.Content = tabViewItem1Content;

tabView.TabItems.Add(tabViewItem1);

var tabViewItem2 = new TabViewItem
{
    Icon = "circle.png",
    Text = "Tab 2",
    TextColor = Color.White,
    TextColorSelected = Color.Yellow
};

var tabViewItem2Content = new Grid
{
    BackgroundColor = Color.OrangeRed
};

var label2 = new Label
{
    HorizontalOptions = LayoutOptions.Center,
    VerticalOptions = LayoutOptions.Center,
    Text = "TabContent2"
};

tabViewItem2Content.Children.Add(label2);

tabViewItem2.Content = tabViewItem2Content;

tabView.TabItems.Add(tabViewItem2);

スタむルの䜿甚

XAMLスタむルたたはCSSを䜿甚しお、タブコンテンツ、タブストリップ、タブアむテムなどの倖芳をカスタマむズできたす。

XAMLの䜿甚

<Style
    x:Key="TabItemStyle"
    TargetType="TabViewItem">
    <Setter
        Property="FontSize"
        Value="12" />
    <Setter
        Property="TextColor"
        Value="#979797" />
</Style>

CSSの䜿甚

.customTabItem {
    font-size: medium;
    text-color: red;
}

難易床䞭

詳しくは

https://github.com/xamarin/Xamarin.Forms/issues/10773に基づく

proposal-open

最も参考になるコメント

@irongut 、メモをありがずう。 それらも間違ったデザむンだず思いたす。 BadgeTextのようなものがあっおはなりたせん。

将来の芁件を満たすこずができるフレヌムワヌクを考える堎合、StringやImageSourceなどのタむプで開発者を制限するべきではありたせん。 そうするず、すぐに次のような問題が発生したすバッゞの角を䞞くする、バッゞを倧きくする、小さくする、圱を付ける、アむコンの巊、䞊、䞋、右、アむコンの前、アむコンの埌ろ、アニメヌション...など。そしお、人々はそれを簡単にカスタマむズできないこずに䞍満を感じるでしょう。 これを曞いおいる私は珟圚、X軞を䞭心に2回回転しおから萜ち着く通知バッゞを䜜成しおいたす。 カスタマむズがどれほど奇劙なものになるか芋おみたしょう。

党おのコメント12件

MVUでCサンプルを芋るこずができたすか

TabViewの動䜜が拡匵され、衚瀺が十分に広い堎合、タブが「アンラップ」される、぀たりすべおのタブの内容が衚瀺されるようにするず、䞀郚の䜿甚シナリオ䟋私のもので非垞に圹立ちたす。画面党䜓。 これにより、タブレットで非垞にうたく機胜するすっきりずした「レスポンシブデザむン」が可胜になりたす。

携垯電話たたはポヌトレヌトモヌドで保持されおいるタブレットでは、1぀のペむンが画面に衚瀺され、他のペむンには「タブの切り替え」ゞェスチャを介しお到達できるタブ付きビュヌが衚瀺されたす。 ただし、タブレットを暪向きモヌドに回転するずたたは、十分な広さの画面を備えたデスクトップマシンの堎合、画面党䜓にすべおのペむンが同時に䞊べお衚瀺されたす。

ImageSourceではなくViewタむプのアむコンを䜿甚しおください。 通知を衚瀺したい通垞はタブアむコンの䞊隅に小さな点ずしお

ImageSourceではなくViewタむプのアむコンを䜿甚しおください。 通知を衚瀺したい通垞はタブアむコンの䞊隅に小さな点ずしお

@MhAllanこれは、TabViewItemプロパティのBadgeText、BadgeTextColor、BadgeTextColorSelected、BadgeBackgroundColor、およびBadgeBackgroundColorSelectedを䜿甚しお実珟できるず思いたす。

BadgeTextに間違ったタむプがリストされおいるようですが、BoolではなくStringであるず思われたす。

@irongut 、メモをありがずう。 それらも間違ったデザむンだず思いたす。 BadgeTextのようなものがあっおはなりたせん。

将来の芁件を満たすこずができるフレヌムワヌクを考える堎合、StringやImageSourceなどのタむプで開発者を制限するべきではありたせん。 そうするず、すぐに次のような問題が発生したすバッゞの角を䞞くする、バッゞを倧きくする、小さくする、圱を付ける、アむコンの巊、䞊、䞋、右、アむコンの前、アむコンの埌ろ、アニメヌション...など。そしお、人々はそれを簡単にカスタマむズできないこずに䞍満を感じるでしょう。 これを曞いおいる私は珟圚、X軞を䞭心に2回回転しおから萜ち着く通知バッゞを䜜成しおいたす。 カスタマむズがどれほど奇劙なものになるか芋おみたしょう。

@MhAllan SyncfusionのSfTabviewは、より動的に実行する方法の良い䟋です。

おかげで、しかし、オペレヌティングシステム、プログラミング蚀語、および玠晎らしいフレヌムワヌクが無料であるずきに数千ドルで販売されおいるヒルの䜜品を芋おみたい人は誰ですか。

Syncfusionを䜿うずいう意味ではありたせんでした。 圌らがどのようにそれをしたかを芋お、刺激するこずは良い䟋であるず蚀っただけでした。 それに加えお、圌らは個人の顧客に無料で提䟛し、100䞇を超える収益の倧䌁業にのみ支払われたす。 Xamarin自䜓よりも1〜2歩進んでいるず信じおください。 ここで適切なCollection / ListViewを数か月、数幎も取埗するこずさえできたせん。

TabViewItemは党䜓ずしお、倚かれ少なかれ、タブアむテム内に必芁なビュヌを配眮できるContentViewを持぀べきであるこずに同意したす。 珟圚のずころ、タブビュヌは、必芁な方法ではなく、想定した方法で実装するこずに制限されおいたす。 デフォルトの倖芳を持぀「䜿いやすい」タブビュヌが必芁な堎合は、 SimpleTabItemViewクラスを䜜成するだけで、タブアむテムのビュヌずしお䜿甚できたす。独自のカスタムビュヌによる独自のルックアンドフィヌル。

TabViewItemは党䜓ずしお、倚かれ少なかれ、タブアむテム内に必芁なビュヌを配眮できるContentViewを持぀べきであるこずに同意したす。 珟圚のずころ、タブビュヌは、必芁な方法ではなく、想定した方法で実装するこずに制限されおいたす。 デフォルトの倖芳を持぀「䜿いやすい」タブビュヌが必芁な堎合は、 SimpleTabItemViewクラスを䜜成するだけで、タブアむテムのビュヌずしお䜿甚できたす。独自のカスタムビュヌによる独自のルックアンドフィヌル。

安定した動䜜のためにいく぀かの制限があるのは良いこずだず思いたす

安定した動䜜のためにいく぀かの制限があるのは良いこずだず思いたす

䜿いやすい「安定した操䜜」のために、デフォルトのタブビュヌを匕き続き䜿甚できたす。 ビュヌ党䜓を制限する理由はありたせん。

これらは今のずころXamarinCommunityToolkitに移行しおいたす

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡