Xamarin.forms: [المواصفات] TabView

تم إنشاؤها على ١٩ مايو ٢٠٢٠  ·  24تعليقات  ·  مصدر: xamarin/Xamarin.Forms

TabView

يمكن أن يكون لدينا علامات تبويب باستخدام شل. ومع ذلك ، ماذا يحدث إذا أردنا الحصول على علامات تبويب متداخلة داخل قسم معين (مثال: الشبكة) ؟، _ماذا لو أردنا تخصيص كل علامة تبويب بالكامل؟ _. في هذه الحالات ، سنحتاج إلى عارض مخصص حتى الآن ...

TabView هي طريقة لعرض مجموعة من علامات التبويب والمحتوى الخاص بها. يعد TabView مفيدًا لعرض العديد من المحتويات مع منح المستخدم القدرة على تخصيص كل شيء في الغالب.

tabview

ملاحظة: TabView هو عرض عبر الأنظمة الأساسية يتولى الأمر عندما تصل علامات التبويب الأصلية إلى حدودها ، مثل تحديد الموضع مع التخطيطات والتصميم والتصميم غير الموحد مثل الزر المرتفع.

API

بعد ذلك ، قائمة بخصائص TabView والأحداث والحالات المرئية.

الخصائص

خصائص TabView

| الملكية | اكتب | الوصف |
| ---------- |: -------------: |: -------------: |
| TabItemsSource | I لا يحصى | مجموعة تستخدم لإنشاء عناصر علامة التبويب الخاصة بـ TabView. |
| TabViewItemDataTemplate | قالب البيانات | القالب الذي تستخدمه طريقة عرض علامة التبويب لإنشاء رأس عناصر علامة التبويب. |
| TabContentDataTemplate | قالب البيانات | القالب الذي تستخدمه طريقة عرض علامة التبويب لإنشاء محتوى عناصر علامة التبويب. |
| متساوي | منطقي | تمكين أو تعطيل التنقل الدوري لعلامات التبويب. |
| IsLazy | منطقي | تمكين أو تعطيل تحميل علامات التبويب البطيئة. |
| الفهرس المحدد | كثافة العمليات | يحصل أو يحدد علامة التبويب المحددة حاليا. الافتراضي هو 0. |
| TabStripPlacement | TabStripPlacement | موضع TabStrip (أعلى أو أسفل). |
| TabStripBackground | فرشاة | خلفية TabStrip. |
| TabIndicatorBrush | فرشاة | خلفية TabIndicator. |
| TabIndicatorHeight | مزدوج | ارتفاع مؤشر الجدولة. |
| عرض الجدولة | مزدوج | عرض TabIndicator. |
| TabIndicatorPlacement | TabIndicatorPlacement | |
| TabIndicatorView | عرض | محتوى TabIndicator. |
| TabContentBackground | فرشاة | خلفية محتوى علامة التبويب. |
| TabContentHeight | مزدوج | ارتفاع محتوى علامة التبويب. |
| TabStripHeight | مزدوج | ارتفاع TabStrip. |
| TabContentHeight | مزدوج | ارتفاع محتوى علامة التبويب. |
| HasTabStripShadow | منطقي | إظهار أو إخفاء تأثير ظل TabStrip. |
| IsTabTransitionEnabled | منطقي | تمكين أو تعطيل الانتقال بين علامات التبويب. |
| IsSwipeEnabled | منطقي | تمكين أو تعطيل إيماءة التمرير. |

خصائص TabViewItem

| الملكية | اكتب | الوصف |
| ---------- |: -------------: |: -------------: |
| نص | سلسلة | نص علامة التبويب. |
| لون النص | اللون | لون نص علامة التبويب. |
| TextColorSelected | اللون | لون نص علامة التبويب المحددة. |
| حجم الخط | حجم الخط | حجم الخط المستخدم في نص علامة التبويب. |
| FontSizeSelected | حجم الخط | حجم الخط المستخدم في علامة التبويب المحددة. |
| FontFamily | سلسلة | عائلة الخطوط المستخدمة في علامة التبويب. |
| FontFamilySelected | سلسلة | عائلة الخطوط المستخدمة في علامة التبويب المحددة. |
| سمات الخط | سمات الخط | سمات الخط المستخدمة في علامة التبويب. |
| FontAttributesSelected | سمات الخط | سمات الخط المستخدمة في علامة التبويب المحددة. |
| أيقونة | مصدر الصورة | أيقونة علامة التبويب. |
| IconSelected | مصدر الصورة | ImageSource المستخدمة كأيقونة في علامة التبويب المحددة. |
| المحتوى | عرض | محتوى علامة التبويب. هو عرض ، يمكن استخدام أي شيء كمحتوى. |
| BadgeText | منطقي | نص الشارة المستخدم في علامة التبويب. |
| BadgeTextColor | اللون | لون نص الشارة المستخدم في علامة التبويب. |
| BadgeTextColorSelected | اللون | لون نص الشارة المستخدم في علامة التبويب المحددة. |
| BadgeBackgroundColor | اللون | لون الشارة المستخدم في علامة التبويب. |
| BadgeBackgroundColorSelected | اللون | لون الشارة المستخدم في علامة التبويب المحددة. |
| محدد | منطقي | منطقي يشير إلى ما إذا تم تحديد علامة التبويب أم لا. |
| TapCommand | ICommand | الأمر الذي يتم تنفيذه عندما يقوم المستخدم بالنقر فوق علامة تبويب. |
| TapCommandParameter | كائن | معلمة أمر الحنفية. |

الأحداث

أحداث TabView

| حدث | الوصف |
| ---------- |: -------------: |
| تم تغيير التحديد | الحدث الذي يتم رفعه عند تغيير علامة التبويب المحددة. |
| بالتمرير | الحدث الذي يتم رفعه عند التمرير بين علامات التبويب. |

أحداث TabViewItem

| حدث | الوصف |
| ---------- |: -------------: |
| TabTapped | الحدث الذي يتم رفعه عندما يقوم المستخدم بالنقر فوق علامة تبويب. |

فيجوالستاتس

يوفر Visual State Manager (VSM) طريقة منظمة لإجراء تغييرات مرئية على واجهة المستخدم من التعليمات البرمجية.
يقدم VSM مفهوم الحالات المرئية. يمكن أن يكون لـ TabView العديد من المظاهر المرئية المختلفة اعتمادًا على حالتها الأساسية.

يحتوي TabView على أربع حالات VisualStates محددة:

  • CurrentTabVisualState
  • NextTabVisualState
  • PreviousTabVisualState
  • 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. دعونا نرى كيف يمكننا إنشاء علامات تبويب باستخدام 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;
}

الصعوبة: متوسطة

high impact proposal-open roadmap enhancement ➕

التعليق الأكثر فائدة

تحكم رائع. ومع ذلك ، أعتقد أنه يمكن تحديث هذا قليلاً لتغطية تصميم مثل هذا:

ezgif com-optimize

الخصائص

خصائص TabView (إضافية)

الملكية | اكتب | وصف
- | - | -
ركن راديوس | تعويم | يسمح بتعيين نصف قطر الزوايا من عرض علامة التبويب
طلب الارتفاع | مزدوج | يسمح بضبط ارتفاع عنصر التحكم
WidthRequest | مزدوج | يسمح بضبط عرض عنصر التحكم

خصائص TabViewItem (إضافية)

الملكية | اكتب | وصف
- | - | -
IconPlacement | IconPlacement | يسمح بتعيين موقع الرمز في علامة التبويب: أعلى ، أسفل ، يسار ، يمين
ركن راديوس | تعويم | يسمح بتعيين نصف قطر الزوايا من عرض علامة التبويب
BadgeIcon | مصدر الصورة | الصورة المراد استخدامها كمؤشر شارة. بسبب شيء ما نحتاج فقط إلى إظهار نقطة صغيرة عليه بدون نص أو أرقام.

ال 24 كومينتر

رائع!

أشياء جميلة

أحسنت!

فيما يتعلق بالاسم "TabView" ، أشعر بالقلق من أنه سيخلق بعض الالتباس مع الاسم الموجود في UWP ، خاصة عندما يأتي اليوم الذي يتم فيه تعيين عنصر التحكم هذا إلى Xamarin.Forms / MAUI.

وآمل أن يأتي ذلك اليوم لأنه سيكون من الجيد التحكم في UWP و iPad و Android Tablet. سيكون الأمر أكثر برودة إذا كان لديه طريقة للتحول السلس للهواتف أيضًا.

تحكم رائع. ومع ذلك ، أعتقد أنه يمكن تحديث هذا قليلاً لتغطية تصميم مثل هذا:

ezgif com-optimize

الخصائص

خصائص TabView (إضافية)

الملكية | اكتب | وصف
- | - | -
ركن راديوس | تعويم | يسمح بتعيين نصف قطر الزوايا من عرض علامة التبويب
طلب الارتفاع | مزدوج | يسمح بضبط ارتفاع عنصر التحكم
WidthRequest | مزدوج | يسمح بضبط عرض عنصر التحكم

خصائص TabViewItem (إضافية)

الملكية | اكتب | وصف
- | - | -
IconPlacement | IconPlacement | يسمح بتعيين موقع الرمز في علامة التبويب: أعلى ، أسفل ، يسار ، يمين
ركن راديوس | تعويم | يسمح بتعيين نصف قطر الزوايا من عرض علامة التبويب
BadgeIcon | مصدر الصورة | الصورة المراد استخدامها كمؤشر شارة. بسبب شيء ما نحتاج فقط إلى إظهار نقطة صغيرة عليه بدون نص أو أرقام.

هذا يبدو رائعا!

vhugogarcia شكرًا على ملاحظاتك ، ممتع جدًا !.

باستخدام تعريف المواصفات ، يمكنك بالفعل إدارة حجم TabView ، حتى المحتوى أو ارتفاع TabStrip. حول have CornerRadius ، mnnn ، أعتقد أنه سيكون من المثير للاهتمام إذا كان لدينا الخيار في TabStrip ، أليس كذلك ؟. شيء من هذا القبيل TabStripCornerRadius .

في حالة TabViewItem ، يمكنك استخدام قالب لتخصيص المحتوى. حتى تتمكن من إدارة Corner Radius في TabViewItem. ومع ذلك ، يمكننا الحصول على الخاصية CornerRadius والسماح بتخصيص الزوايا أيضًا في القوالب الافتراضية.

ثم لدينا IconPlacement و BadgeIcon . كلاهما يبدو وكأنه أفكار جيدة بالنسبة لي.

سوف أقوم بتحديث المواصفات.

هل يمكنني استخدام هذا بدون شل؟

إنها مجرد مجموعة من عناصر النماذج مجتمعة

يمكنك استخدامه في أي مكان يمكنك عرضه فيه :-)

مرحبًا يا شباب ، هل يمكنك التأكد من أن عناصر التحكم الرائعة هذه تعمل بدون صدفة؟ لا تستخدم آلاف التطبيقات shell ونستخدم Prism الذي كما تعلم لا يمكنه استخدام shell حتى يسمح shell بالتكامل الصحيح مع حقن التبعية. شكرا لكم

@ developer9969 يرجى الاطلاع على التعليقين السابقين وإجابة PureWeen

@ developer9969 نعم ، يمكنك استخدامه بدون شل أيضًا.

جميل ، لقد كنت أتطلع إليها منذ فترة طويلة ، شكرا سيدي!

رائع !! ، متى يمكن استخدامه؟

عندما أقوم بعرض تطبيقي على جهاز iPad في الوضع الأفقي ، لدي هوامش عريضة ولكني أرغب أيضًا في الحصول على هامش واسع لأيقونات علامات التبويب بحيث تكون الأيقونات على سبيل المثال متباعدة بشكل متساوٍ ولكن بها هامش 200 جهة اليمين و اليسار. هل هذا ممكن؟

rscholey نعم ، سيكون ممكنًا.

jsuarezruiz رأيت أن TabView قد تم "قصه" من خريطة الطريق. هل هذا يعني أنه لن يعاود الظهور حتى MAUI؟ (نفس السؤال عن AppBar)

مرحبًا timahrentlov ، نعم ، لقد قطعناها من إصدارات النماذج القادمة من أجل توفير مساحة إضافية للتحسينات الأساسية التي نحتاج إلى التركيز عليها.

من أجل الاستمرار في شحن عناصر التحكم هذه في وقت أقرب ، نخطط لنقلها إلى مجموعة أدوات XamarinCommunity . لدينا زخم جيد هناك (_ أدخل عرض توظيف المساهمين ؛) _) وآمل أن يكون هذا خيارًا معقولًا خلال هذه الفترة الانتقالية.

jsuarezruiz الرجاء إغلاق هذه المشكلة هنا ونقلها إلى .NET MAUI. نفس الشيء بالنسبة لشريط التطبيقات.

davidortinau هل نتوقع رؤية خارطة طريق محدثة قريبًا؟ حتى لو تغيرت فقط "تحت الغطاء" ، أنا متأكد من أن الكثيرين سيكونون مهتمين بمعرفة ما الذي يعمل عليه الفريق بالفعل.

يا لها من المشكله. :(
كنت أنتظر بشدة هذا.

لم أر إمكانية تسجيل مسارات TabViewItems. هل سيكون من الممكن تسجيل مسارات TabViewItems والتنقل خلالها باستخدام التنقل المطلق؟

هل تم نقله بالفعل إلى https://github.com/xamarin/XamarinCommunityToolkit؟ لا يمكنني العثور عليه هناك. أو لا يوجد رمز موجود حتى الآن؟

هل تم نقله بالفعل إلى https://github.com/xamarin/XamarinCommunityToolkit؟ لا يمكنني العثور عليه هناك. أو لا يوجد رمز موجود حتى الآن؟

https://github.com/jsuarezruiz/Xamarin.Forms.TabView أعتقد أن هذا هو واحد

AswinPG يبدو هذا جيدًا ولكني أعتقد أنه أقدم من هذه المشكلة وليس هناك نوغ لها. لا يزال من الممكن استخدامها لأي شخص يحتاج بشكل عاجل على ما أعتقد

jsuarezruiz يبدو الريبو الخاص بك جيدًا بالفعل. أنت لم تطلق حزمة nuget لهذا؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات