Xamarin.forms: [خطأ] RadioButton لا يعرض نصًا على Android

تم إنشاؤها على ٨ أغسطس ٢٠٢٠  ·  25تعليقات  ·  مصدر: xamarin/Xamarin.Forms

وصف

بعد التحديث إلى Xamarin.Forms 4.8 ، لم تعد أزرار الاختيار تعرض نصوصها ضمن Android. نفس الكود يعمل تحت 4.7.

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

  1. قم بإنشاء Xamarin.Forms تطبيق صفحة فارغة
  2. أضف زر اختيار إلى الصفحة الرئيسية:
    <RadioButton Margin="5" Text="Test" />
  3. تأكد من تحديث حزم Xamarin.Forms NuGet إلى 4.8.0.1269 وقم بتشغيل التطبيق ضمن Android.

سلوك متوقع

يعرض زر الاختيار النص "اختبار" إلى اليمين.

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

يتم عرض دائرة زر الاختيار فقط ، بدون نص.

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

  • الإصدار الذي يحتوي على الإصدار: 4.8.0.1269
  • آخر إصدار جيد معروف: 4.7.0.1260
  • IDE: Visual Studio 2019
  • الأطر المستهدفة للمنصة:

    • أندرويد: 9.0

لقطات

Screenshot_20200807-233203

unverified bug

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

يغلق الآن.

يمر RadioButton بتغيير كبير في 5.0.0

11628

من فضلك لا تقدم أي شيء جديد ، فقط أصلح الوظائف الحالية. رجاء!

ال 25 كومينتر

يغلق الآن.

يمر RadioButton بتغيير كبير في 5.0.0

https://github.com/xamarin/Xamarin.Forms/pull/11628

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

بالنسبة لي أيضًا ، لا يعمل زر الاختيار بعد التحديث إلى إصدار 4.8 من نماذج xamarin. أرجو إفادتي ما إذا كان بإمكاني استخدامه مشروعي في الوقت الحقيقي أم لا.
image

@ kamalkumar1 يعمل زر

            <StackLayout Orientation="Horizontal">
              <RadioButton Margin="5" Text="Dark theme" IsChecked="{Binding UseDarkTheme}" />
              <Label VerticalOptions="Center" Text="Dark theme" IsVisible="{OnPlatform Android=true, UWP=false}" >
                <Label.GestureRecognizers>
                  <TapGestureRecognizer Tapped="UseDarkTheme_Tapped" />
                </Label.GestureRecognizers>
              </Label>
            </StackLayout>

يغلق الآن.

يمر RadioButton بتغيير كبير في 5.0.0

11628

من فضلك لا تقدم أي شيء جديد ، فقط أصلح الوظائف الحالية. رجاء!

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

Munde عندما تستخدم منتجات Microsoft لفترة طويلة ، تعتاد على أنها تكسر شيئًا مع كل إصدار. لكن نعم ، من المزعج للغاية أن يكسر إطار عمل التطوير عدة أشياء مع كل إصدار دون حتى إصلاح جميع الإصدارات القديمة ...

حل سريع للمشكلة:

<StackLayout Orientation="Horizontal">
    <StackLayout.Spacing>
        <OnPlatform x:TypeArguments="x:Double">
            <On Platform="iOS" Value="-8" />
        </OnPlatform>
    </StackLayout.Spacing>

    <RadioButton x:Name="LocalRadioButton" IsChecked="{Binding IsSelected}"
                 GroupName="{Binding Source={x:Reference EntryGrid}, Path=BindingContext.Identifier}" />

    <Label Text="{Binding SelectionText}" FontSize="Default" LineBreakMode="TailTruncation" VerticalOptions="Center">
        <Label.GestureRecognizers>
            <TapGestureRecognizer Command="{Binding ViewModel.ToggleRadioButtonCommand, Source={x:Reference ContentPage}}"
                CommandParameter="{x:Reference LocalRadioButton}" />
        </Label.GestureRecognizers>
    </Label>
</StackLayout>

نعم ، أعلم أن هذا يزيد من VisualTree. نعم ، أعلم أيضًا أن هذا يتطلب ViewModel للإشارة إلى RadioButton والقيام بتبديل IsChecked. إنه ليس حلاً جيدًا ونظيفًا ولكنه على الأقل يعمل ..

لقد وجدت هذه المشكلة أيضا. إنه أمر محير للغاية ومتعب مثل متعلم Xamarin جديد.

hopeko تعتاد على ذلك ، يفعلون ذلك بشكل منتظم لكسر الأشياء في التحديثات. :د

@ Sebastian1989101 لقد استخدمت طريقة أخرى حول استخدام tapGestures ولكن بشكل عام تجربة المطورين غير السارة منذ أن ضيعت ما يقرب من ساعتين في البداية في البحث عن ما هو خطأ في الكود الخاص بي ، وأيضًا في الإصدار القادم ، هناك الكثير من التغييرات التي ستحدث باستخدام c # للماكياج n لقد قيل لنا إنه تم طرده من أشكال xamarin ، لذا من الأفضل البقاء مع xf 4.8 أو الانتقال إلى 5 عندما يكون متاحًا هناك لا يوجد انتقال بسيط

هذا خطأ مثير للاهتمام يتم تقديمه في Xamarin Forms 4.8 إذا تم دمج التغييرات التي تسير في اتجاه مختلف تمامًا في Forms 5.0. يبدو من الغريب أن يتم كسر 4.8 على Android تمامًا إذا كانت التذكرة الأخرى ستغير الأشياء في الإصدار 5.0.

بالنسبة لفريق Xamarin dev ، لم يكن هناك مشكلة كبيرة في كسر شيء ما ، ولكن إصلاحه استغرق وقتًا طويلاً. سؤال ، ماذا تفعل بحق الجحيم ؟؟؟

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

Aarrrggghhh ، فقط كنت أضيع وقتي على هذا. محظوظ لأنني صادفته قبل أن أطلقنا هذا بالصدفة.
سأحاول استبدال جميع أزرار الراديو الخاصة بنا بحل StackLayout / OnPlatform / TapGesture / Label المضحك ، شكرًا @ Sebastian1989101

محبط.

جرب التحكم في الإدخال متوفر في حزمة nuget.

يتعلق

كامالكومار إي
مطور تطبيقات الجوال الأول
الجوال: + 91-9750461689
سكايب: kamalelango15
https://www.linkedin.com/in/kamal-kumar-39450654/

في يوم السبت ، 3 أكتوبر ، 2020 الساعة 3:57 مساءً ، كتب RhomGit [email protected] :

Aarrrggghhh ، فقط كنت أضيع وقتي على هذا. لقد جئت عبر محظوظ
قبل أن نطلقها عن طريق الخطأ.
سأحاول استبدال جميع أزرار الراديو الخاصة بنا بأخرى سخيفة
حل بديل StackLayout / OnPlatform / TapGesture / Label ، شكرًا
@ Sebastian1989101 https://github.com/Sebastian1989101

محبط.

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

Wtf PureWeen ماذا تقصد إغلاق هذا الآن ؟؟ إنه حرفيا مكسور تماما وخطأ انحدار. يا لها من مزحة. التجريبية لا تعني "عدم العمل". سأعود إلى 4.7

على الرغم من أنني لا أتفق مع اللغة ، إلا أنني أوافق على أن هذا كان شكلًا سيئًا للغاية وغير مريح للغاية.

نشأت المزيد من المشكلات مؤخرًا في أحدث بنية إنتاجية لدينا بسبب هذا. نحتاج الآن إلى إعداد بنية أخرى لأن عناصر إدخال البيانات لواجهة المستخدم غير قابلة للاستخدام. خطأي حقًا ، لقد قمنا بإنشاء بعض عناصر واجهة المستخدم في الكود وليس XAML وهو ما فاتني عند القيام بحل StackLayout / OnPlatform / TapGesture / Label الأصلي.

ربما لن أزعج نفسي باستخدام الميزات التجريبية مرة أخرى.

لقد قمت بتنزيل XF 5.0 ولا توجد خاصية Text في RadioButton.
لا يوجد نص - لا خطأ.
ربح! =)

لقد قمت بتنزيل XF 5.0 ولا توجد خاصية Text في RadioButton.
لا يوجد نص - لا خطأ.
ربح! =)

ربما ، فقط لأنه يحتوي الآن على محتوى يمكنه استيعاب كل شيء. انظر: https://youtu.be/ttF80UnrJAg؟t=364

التبديل إلى https://github.com/enisn/Xamarin.Forms.InputKit

أدرك أن الميزة كانت تجريبية - لا ينبغي إغلاق المشكلة. تعد أجهزة الراديو التي لا تحتوي على ملصقات مشكلة كبيرة ، ومجرد إغلاقها لا يترك لي الكثير من الثقة.

لقد قمت بتنزيل XF 5.0 ولا توجد خاصية Text في RadioButton.
لا يوجد نص - لا خطأ.
ربح! =)

ربما ، فقط لأنه يحتوي الآن على محتوى يمكنه استيعاب كل شيء. انظر: https://youtu.be/ttF80UnrJAg؟t=364

شكر. سوف أتحقق من هذا.

لا يمكنني التحدث عن موثوقيتها ، لكنني تمكنت من التغلب على هذه المشكلة باستخدام عارض مخصص.

using Android.Content;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(RadioButton), typeof(ProjectName.Droid.Renderers.PatchedRadioButtonRenderer))]
namespace ProjectName.Droid.Renderers
{
    /// <summary>
    /// A workaround for the issue in the in-box renderer.
    /// https://github.com/xamarin/Xamarin.Forms/issues/11700
    /// </summary>
    public class PatchedRadioButtonRenderer : RadioButtonRenderer
    {
        public PatchedRadioButtonRenderer(Context context) : base(context) {}

        protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
        {
            // Apply text to native radio button
            this.Control.Text = e.NewElement.Text;

            base.OnElementChanged(e);
        }
    }
}

@ IgorKravchenko10 هناك قيمة أنا شيء يحل محل النص

كلاسيك زامارين!

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

القضايا ذات الصلة

rmarinho picture rmarinho  ·  3تعليقات

Papirosnik picture Papirosnik  ·  3تعليقات

deakjahn picture deakjahn  ·  3تعليقات

joseluisct picture joseluisct  ·  3تعليقات

EmilAlipiev picture EmilAlipiev  ·  3تعليقات