将 AutomationProperties 设置为导航栏的后退按钮以避免 TalkBack "Unlabeled button"
Set AutomationProperties to back button of the navigation bar to avoid TalkBack's "Unlabeled button"
我正在使用 Xamarin.Fomrs 开发可访问的跨平台应用程序。我正在使用 NavigationPage
来管理导航。当我在第二页并且我想使用导航栏中的按钮返回时,TalkBack 说:"unlabeled button".
如何为这个按钮设置 AutomationProperties
?主要目标是根据当前视图设置不同的帮助文本。可以吗
我用这个渲染器实现了我的目标:
[assembly: ExportRenderer(typeof(ContentPage), typeof(AndroidNavigationPageRenderer))]
namespace SZukaldatzen.Droid.Renderers
{
public class AndroidNavigationPageRenderer : PageRenderer
{
public AndroidNavigationPageRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
Activity context = (Activity)this.Context;
var toolbar = context.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
toolbar.NavigationContentDescription = "Go back";
}
}
}
现在对话说"Go back"选择返回按钮。
已接受的答案对我不起作用。对我有用的(Xamarin 5,Android 11)是这样的:
[assembly: ExportRenderer(typeof(NavigationPage), typeof(NavigationPageCustomRenderer))]
namespace CustomRenderers
{
public class NavigationPageCustomRenderer : NavigationPageRenderer
{
public NavigationPageCustomRenderer(Context context) : base(context) { }
public override void AddChildrenForAccessibility(IList<Android.Views.View> views)
{
base.AddChildrenForAccessibility(views);
var backButton = views.FirstOrDefault(x => x is Android.Widget.ImageButton && string.IsNullOrEmpty(x.ContentDescription));
if (backButton != null)
{
backButton.ContentDescription = "Go back";
}
}
}
}
对于 AndroidX,我使用了以下内容:
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
Activity context = (Activity)this.Context;
var toolbar = context.FindViewById<AndroidX.AppCompat.Widget.Toolbar>(Resource.Id.toolbar);
if (toolbar != null)
{
toolbar.NavigationContentDescription = "Go back";
}
}
我正在使用 Xamarin.Fomrs 开发可访问的跨平台应用程序。我正在使用 NavigationPage
来管理导航。当我在第二页并且我想使用导航栏中的按钮返回时,TalkBack 说:"unlabeled button".
如何为这个按钮设置 AutomationProperties
?主要目标是根据当前视图设置不同的帮助文本。可以吗
我用这个渲染器实现了我的目标:
[assembly: ExportRenderer(typeof(ContentPage), typeof(AndroidNavigationPageRenderer))]
namespace SZukaldatzen.Droid.Renderers
{
public class AndroidNavigationPageRenderer : PageRenderer
{
public AndroidNavigationPageRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
Activity context = (Activity)this.Context;
var toolbar = context.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
toolbar.NavigationContentDescription = "Go back";
}
}
}
现在对话说"Go back"选择返回按钮。
已接受的答案对我不起作用。对我有用的(Xamarin 5,Android 11)是这样的:
[assembly: ExportRenderer(typeof(NavigationPage), typeof(NavigationPageCustomRenderer))]
namespace CustomRenderers
{
public class NavigationPageCustomRenderer : NavigationPageRenderer
{
public NavigationPageCustomRenderer(Context context) : base(context) { }
public override void AddChildrenForAccessibility(IList<Android.Views.View> views)
{
base.AddChildrenForAccessibility(views);
var backButton = views.FirstOrDefault(x => x is Android.Widget.ImageButton && string.IsNullOrEmpty(x.ContentDescription));
if (backButton != null)
{
backButton.ContentDescription = "Go back";
}
}
}
}
对于 AndroidX,我使用了以下内容:
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
Activity context = (Activity)this.Context;
var toolbar = context.FindViewById<AndroidX.AppCompat.Widget.Toolbar>(Resource.Id.toolbar);
if (toolbar != null)
{
toolbar.NavigationContentDescription = "Go back";
}
}