Xamarin.forms: المحاذاة الأفقية لمحتوى طريقة عرض العنوان

تم إنشاؤها على ٢٢ ديسمبر ٢٠١٨  ·  28تعليقات  ·  مصدر: xamarin/Xamarin.Forms

وصف

تعذر توسيط المحتوى أفقيًا في TitleView.
يسعدني أن أرى هذه الميزة في XF ولكني أرغب في تقديم بعض الأفكار بناءً على هذه المشكلة حول كيفية جعل هذه الميزة أكثر فائدة.
لا يمكننا توسيط محتوى العرض المخصص أفقيًا نسبيًا على شاشة الجهاز ، ويعتمد ذلك على ما إذا كان هناك زر رجوع أم لا ، أو العنصر (العناصر) الأيمن أم لا ، وما إلى ذلك.
the issue

خطوات التكاثر

  1. قم بإنشاء صفحتين ، باستخدام طريقة عرض عنوان مخصصة متطابقة ، أضف عنصر شريط الأدوات في الصفحة الثانية
  2. انظر إلى سلوك Page1 Title View.
  3. انتقل إلى الصفحة 2 ، انظر مرة أخرى.

سلوك متوقع

يجب أن يتم توسيط محتوى TitleView بشكل صحيح.
كما يمكننا أن نرى النقطة المركزية الأفقية المنطقية لمحتوى TitleView لن يتم توسيطها أبدًا بواسطة نقطة المركز الأفقية لشاشة الهاتف. لذلك ، لا يمكننا وضع أي صورة أو محتوى ديناميكي لإنشاء شيء من هذا القبيل (صورة عشوائية من الإنترنت):
...

السلوك الفعلي

تمركز محتوى TitleView بطريقة خاطئة. لا يمكننا السيطرة على ذلك.

معلومات اساسية

  • الإصدار الذي يحتوي على الإصدار:> 3.1
  • آخر إصدار جيد معروف: <= 3.1
  • IDE: VS2017
  • الأطر المستهدفة للمنصة:

    • iOS:
  • حزم نوجيت:
    أشكال Xamarin 3.4.0

  • الأجهزة المتأثرة:
    كل iOS

    لقطات

رابط الاستنساخ

لقد قدمت مثالًا قصيرًا ، يمكنك اتباع هذا الرابط لرؤيتها في التعليمات البرمجية ، استنادًا إلى مثال Xamarin.Forms.ControlGallery الخاص بـ XF في هذا الفرع - فقط قم باستنساخ وتشغيل تطبيق iOS ، ثم حدد عرض العنوان ثم BDF: TitleView Centered ، ادمج مع تبديل عنصر شريط الأدوات

لقد صنعت بعض الأمثلة النظرية في محاولة لتقديم حل ممكن حول كيفية حلها. بشكل عام ، نحتاج إلى تحديد حجم وموضع حاوية TitleView للسماح بتوسيط محتواها.
...

الوضع الافتراضي -

سلوك "حاوية العرض" هو نفسه الآن.
Default Mode

وضع الشبح - (إذا كان من الممكن تنفيذه)

يجب أن تستخدم حاوية العرض كل مساحة شريط التنقل. يمكننا تجاوز بعض عناصر التحكم من خلال محتواها ، ولكن لا بأس بذلك في بعض المواقف.
Ghost Mode

الوضع الموحد

يجب أن يشغل حجم حاوية العرض كل المساحة الخالية فيما يتعلق بعناصر شريط التنقل ويتم تثبيتها في مركز الشريط.
Unified Mode

titleview high impact proposal-open enhancement ➕

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

هذه مشكلة خطيرة بالنسبة لنا ، ننتظر حاليًا حلها.

ال 28 كومينتر

أعتقد أنه من الأفضل تغيير النوع من [تحسين] إلى إصدار لأنه يمثل مشكلة أكثر من التحسين

علم. في الوقت الحالي ، إذا كان لديك أي عناصر أخرى في شريط التنقل ، فهذا يجعل المظهر غير مرغوب فيه ولا يستحق استخدامه على الإطلاق.

هذه مشكلة خطيرة بالنسبة لنا ، ننتظر حاليًا حلها.

تضمين التغريدة
هل لديك أي تحديثات على هذا؟
إنه مانع بالنسبة لنا لتحديث إصدار XF لحوالي 5 تطبيقات

شكرا لك!

لا تزال هذه مشكلة في شل وليس لها حل بديل معقول أعلم به. اختراق الهامش السلبي عرضة لسوء التقدير. زيادة التأثير.

أهلا،
عمل رائع في كل مكان !! ولكن بالنسبة لعنصر التحكم هذا ، يبدو أن "TitleView" قد تم إغلاقه في كل مكان ، فهل لن يتم إصلاح هذه المشكلة بعد الآن؟ لا يمكن استخدامه على الإطلاق إذا لم يتم توسيطه. هل هي إعادة كتابة؟ لقد وضعت هامشًا سلبيًا باعتباره اختراقًا أيضًا ، لكنني أتساءل عما إذا كان الاختراق الخاص بي يعمل على جميع الأجهزة ... هل يمكن لأي شخص أن يخبرنا بما يجب القيام به على هذا الجهاز. تشكرات

لقد واجهت مؤخرًا هذه المشكلة بالذات في مشروع Xamarin iOS ولا توجد طريقة لحلها باستخدام عناصر واجهة المستخدم التي توفرها iOS. إذا كنت تستخدم UIBarButtonItem s في UINavigationItem ، فلن يخبرك نظام التشغيل بمدى اتساعها بعد عرضها ، لذلك لا توجد طريقة لتعيين قيود أو أحجام على Title عرض للتعويض.
في النهاية ، تخليت عن كل شيء ونفذت شريط الأدوات الخاص بي باستخدام حاوية عادية UIView ، و UIButton s لأزرار شريط الأدوات ، مع UILabel في المنتصف (بشكل صحيح تتمحور ، لأنها كانت سهلة).
ما نحتاجه من نماذج Xamarin في هذه المرحلة هو القدرة على توفير ContentView الذي ستضعه النماذج في UINavigationBar ، الممتد عبر الشريط بأكمله. من السهل القيام بذلك ، ولكن لا تستخدم خاصية UINavigationBar 's Title - سيتعين على النماذج إضافة ContentView كعرض فرعي لـ NavigationBar بحد ذاتها. ثم يمكننا تعيين المحتوى الخاص بنا داخل ContentView باستخدام Button s ، Label s إلخ ، وترتيبها بشكل صحيح.

أنا أيضًا أبحث عن حل لهذا. تم وضع علامة عليه كنسخة مكررة ولكن تم إغلاق التكرار ويشير إلى هذه المشكلة. هل هناك حل لهذا يجري النظر فيه؟

samhouts مرحبًا ، أي خطة لإصلاح هذا؟ وبقدر ما أعرف ، فإن الكثير من الناس ينتبهون لهذه المشكلة.
ولكن بعد مرور عامين تقريبًا ، لم يتم إصلاحه بعد.

للأسف بقيت القضية حتى مع إدخال القشرة

للأسف لا يبدو أنها أولوية.

الاحتفال بسنة واحدة لهذا الإصدار. 🍾🥂 🎂

يبدو أن بعض تطبيقات Android الافتراضية لها السلوك الموصوف

dummy

هذا ينفخ. يجعل تطبيقاتنا تبدو سيئة.

هذا مزعج جدا. هل يمتلك أحد حلا للمشكة؟

@ julioas09 فعلت ذلك مرة واحدة ولكن نسيت كيف فعلت. لكنني كنت أشير إلى هذين المصدرين وقمت بعملهما. لذلك أعتقد أنه يمكنك أيضًا الرجوع إليهم والقيام بذلك.

https://forums.xamarin.com/discussion/99634/is-there-any-way-to-set-navigation-bars-title-be-center-position

https://github.com/officialdoniald/Xamarin.Forms.CustomControls/blob/master/XamarinForms.CustomControls/XamarinForms.CustomControls.Android/CustomRenderer/CustonNavigationPageRenderer.cs

نحاول حاليًا توسيط صورة في TitleView للوصول إلى بعض تصميمات UX وهذا يتسبب في إزاحة الصورة إلى اليمين نظرًا لوجود زر الرجوع على اليسار ، خارج TitleView.

titleview

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

حقا بحاجة إلى هذا ..... zZz

programmation هل لديك مثال على ذلك؟

تضمين التغريدة
أعرف شيئًا عن إخفاء رمز الهامبرغر

 <Shell.FlyoutIcon>
        <x:String></x:String>
    </Shell.FlyoutIcon>

لكنها ليست مثالية ، لا يزال الهامش الأيسر أكبر قليلاً من الهامش الأيمن.

نحاول حاليًا توسيط صورة في TitleView للوصول إلى بعض تصميمات UX وهذا يتسبب في إزاحة الصورة إلى اليمين نظرًا لوجود زر الرجوع على اليسار ، خارج TitleView.

titleview

الحل البديل: قم بإنشاء زر وهمي وفارغ ولا تفعل شيئًا للجانب الآخر من شريط التنقل.

آسف على التأخير في الرد عليك! لقد نشرت أيضًا حلًا آخر نجح معي في الماضي (لكنني لا أستخدم شل لذا لست متأكدًا مما إذا كان سيساعد هنا): قم بإنشاء زر وهمي للجانب الأيمن من شريط التنقل. يمكنك استخدام لون النص == لون الخلفية لجعله غير مرئي ، وتغيير حجمه بجعله يحتوي على نفس نص الزر الموجود على الجانب الأيسر.

في 24 مارس 2020 الساعة 20:43 ، كتب jaspervanmegroot [email protected] :

programmation https://github.com/programmation هل لديك مثال على ذلك؟

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذه الرسالة الإلكترونية مباشرةً ، أو قم بعرضها على GitHub https://github.com/xamarin/Xamarin.Forms/issues/4848#issuecomment-603134653 ، أو إلغاء الاشتراك https://github.com/notifications/unsubscribe-auth/ACNA4OOTRYXWHCX4GKUPEHDRJB6CLANCX4GKUPEHDRJB6CLANCX4GKUPEHDRJB6CLANCX4GKUPEHDRJB6CLANC

@ البرمجة شكرا!

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

@ eli191 أوافق على أنه ليس مثاليًا حقًا ، ولكن هذا كان أفضل حل بديل لدي أثناء استخدام XF المقدم من XF NavigationPage . بشكل عام ، أنا لست معجبًا بالتخصيصات التي تم تطبيقها على UINavigationController الأساسي ، والتي تعتبر مسؤولة جزئيًا عن مدى صعوبة القيام بما تحاول القيام به. أفكر في الغالب أنه سيكون من الأسهل إنشاء كائن NavigationBar باستخدام برامج عرض النظام الأساسي (قد لا تحتاج إلى أي شيء على الرغم من ذلك) ، ثم استخدم ControlTemplate لتطبيقه على الصفحات التي تريده ، أثناء إزالة شريط التنقل "الرسمي" من NavigationPage . سيكون بالتأكيد أبسط عندما يتعلق الأمر بأشياء مثل تطبيق ألوان مخصصة على خلفية التنقل ، كما أنه سيسمح بالتحكم الكامل في مكدسات الزر الأيمن والأيسر.

programmation هل لديك مثال لمشروع على جيثب؟

لا تزال تواجه هذه المشكلة في أغسطس 2020. سنواجه قريبًا عامين من هذا الخطأ. هل هناك خطة لإصلاحها؟

نحن الآن كيف الميزات الممتازة مثل عرض السحب والإفلات والتمرير السريع لكنني ما زلت أكافح لتوسيط العنوان.

هل هناك أي احتمال لإصلاح هذا في أي وقت قريب؟ ربما في XF 5

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