Xamarin.Android(以前称为Android的Mono)是在Android平台上运行的Mono的实现,允许您使用本机Android库以及使用.NET BCL(基类库)在C#中编写Android应用程序。
Facebook Audience Network 的 Xamarin.Forms 实现
我正在努力在我的 Xamarin.Forms 应用程序中实施 Facebook Audience Network。 可用的 nuget 包很旧并且具有过时的方法。 我能够自己实现广告,测试插播......
我有一个移动应用程序,可以在较大的设备(平板电脑)上完美运行,但在手机中,它一直在整个应用程序的所有布局的底部显示空白区域。 在此示例中,我将显示登录信息
适用于 Xamarin.Forms 的 Google Integrity API
如何使用 Google 最新的 Integrety API 保护我们的 Xamarin.forms Android 应用程序?我发现 Google Play 服务库“com.google.android.play:integrity”有一个绑定。 Xamarin.Google。
在此输入图像描述 这是代码:codeshare.io/VZW3z3 在开始之前,我想提一下,遗憾的是,我的英语不是最好的,所以如果您发现任何错误,我深表歉意。现在,进入
<StackLayout BackgroundColor="White"> <ListView x:Name="ListViewMenu" ItemsSource="{Binding Menus}" HasUnevenRows="True" BackgroundColor="White" SeparatorVisibility="None" VerticalOptions="FillAndExpand" ItemTapped="Handle_ItemTapped" ItemSelected="Handle_ItemSelected" IsGroupingEnabled = "true" SeparatorColor="White"> <ListView.GroupHeaderTemplate> <DataTemplate> <ViewCell> <ViewCell.View> <StackLayout BackgroundColor="LightSkyBlue" HeightRequest="25"> <Label Text="{Binding Key}" FontAttributes="Bold" LineBreakMode="NoWrap" Margin="10,0,0,0"> </Label> </StackLayout> </ViewCell.View> </ViewCell> </DataTemplate> </ListView.GroupHeaderTemplate> <ListView.ItemTemplate> <DataTemplate> <ViewCell> <ViewCell.View> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="6*"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> </Grid.ColumnDefinitions> <Label Text="{Binding article_description}" FontAttributes="Bold" FontSize="13" Margin="10,5,0,-6" Grid.Row="0" LineBreakMode="NoWrap"/> <Label Text="{Binding dish_name}" FontSize="13" Margin="10,0,0,2" Grid.Row="1" Grid.Column="0"/> <Label Grid.Row="0" Grid.Column="0" x:Name="LabelReserved" Text="{Binding reserved}" IsVisible="false" LineBreakMode="NoWrap"/> <Switch Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" HorizontalOptions="Start" VerticalOptions="Center" IsEnabled="False" Toggled="SwitchMenu_OnToggled" > <Switch.Triggers> <DataTrigger TargetType="Switch" Binding="{Binding Source={x:Reference LabelReserved}, Path=Text.Length}" Value="7"> <Setter Property="IsToggled" Value="true" /> </DataTrigger> </Switch.Triggers> </Switch> </Grid> </ViewCell.View> </ViewCell> </DataTemplate> </ListView.ItemTemplate> </ListView> </StackLayout> 我上面有一个列表视图,它有一个开关,如果 labelreserved 的长度为 7,我有一个触发器来切换开关,但我不希望只有当用户单击开关时才触发 Toggled 事件。 可以做我想做的事吗? 注意: 这个解决方案是我的一个实验 - 所以我建议,如果你决定实现这个,请谨慎使用。 基本上,目的是创建一个仅查看的解决方案,能够跟踪如何设置 IsToggled 属性 - 无论是通过触发器、绑定上下文还是点击操作(类似于维护的 属性上下文)对于 BindingContext 于 BindableObject) 假设我们有一个自定义事件,仅当用户点击开关时才会触发 - 这个问题应该得到解决。简单地向 Switch 添加点击识别器似乎不起作用。我们只剩下两个选择: 创建您自己的自定义控件,提供与Switch类似的功能,但仅在捕获点击手势时触发切换事件 - 强烈推荐此选项。 或者,您可以使用自定义事件扩展现有 Switch 控件,并通过提供其自己的一组可绑定属性来跟踪 IsToggled 属性的设置方式。 例如: public class CustomSwitch : Switch { internal enum ToggledSetFlags { None = 0, FromCode = 1 << 0, } ToggledSetFlags _toggleSetStatus = ToggledSetFlags.None; public event EventHandler<ToggledEventArgs> UserToggled; public static readonly BindableProperty ToggledStateFromCodeProperty = BindableProperty.Create( "ToggledStateFromCode", typeof(bool), typeof(CustomSwitch), defaultBindingMode: BindingMode.TwoWay, defaultValue: default(bool), propertyChanged: OnToggledStateFromCodeChanged); public bool ToggledStateFromCode { get { return (bool)GetValue(ToggledStateFromCodeProperty); } set { SetValue(ToggledStateFromCodeProperty, value); } } private static void OnToggledStateFromCodeChanged(BindableObject bindable, object oldValue, object newValue) { ((CustomSwitch)bindable).OnToggledStateFromCodeChangedImpl((bool)oldValue, (bool)newValue); } protected virtual void OnToggledStateFromCodeChangedImpl(bool oldValue, bool newValue) { if (ToggledStateFromCode != IsToggled) { _toggleSetStatus = ToggledSetFlags.FromCode; IsToggled = ToggledStateFromCode; } } protected override void OnPropertyChanged(string propertyName = null) { base.OnPropertyChanged(propertyName); if (propertyName == nameof(IsToggled)) { ToggledStateFromCode = IsToggled; if (_toggleSetStatus == ToggledSetFlags.None) UserToggled?.Invoke(this, new ToggledEventArgs(IsToggled)); else _toggleSetStatus = ToggledSetFlags.None; } } } 并且,示例用法如下所示: <local:CustomSwitch Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" HorizontalOptions="Start" VerticalOptions="Center" ToggledStateFromCode="{Binding IsSwitchOn}" UserToggled="SwitchMenu_OnToggled"> <Switch.Triggers> <DataTrigger TargetType="{x:Type local:CustomSwitch}" Binding="{Binding Source={x:Reference LabelReserved}, Path=Text.Length}" Value="7"> <Setter Property="ToggledStateFromCode" Value="true" /> </DataTrigger> </Switch.Triggers> </local:CustomSwitch> 编辑1:在恢复自定义切换属性状态时错过了在else方法中添加OnPropertyChanged。此外,仅在当前切换值不同时添加检查以设置标志。 编辑2: 将可绑定属性转换为跟踪状态,而不是像以前一样无状态。这确保了能够在不触发事件的情况下处理绑定更改。 您可以通过使用属性 IsEnabled 禁用 Switch 并将其设置为 false 来防止用户切换开关。 这个问题很旧,但我找到了一个简单(有点不正确)的解决方案,我用它来从已接受的答案中节省大量额外的工作。 当我以编程方式切换开关时,我将 Tag 属性设置为 true。 ToggleSwitch.Tag = true; ToggleSwitch.IsOn = true (or false); 然后在我的 Toggled 事件中,我检查 Tag 属性是否为 null 并执行我的操作。这样,事件被触发的唯一时间就是用户切换开关时。 private void ToggleSwitch_Toggled(object sender, RoutedEventArgs e) { ToggleSwitch toggleSwitch = (ToggleSwitch)e.OriginalSource; if (toggleSwitch.Tag == null) { // Switch was toggled by user, do some action. } else { // Switch was toggled programmatically, set Tag null. toggleSwitch.Tag = null; } }
模拟器上的 Xamarin Android 应用程序无法从本地托管的 asp.net core webapi 获取数据:操作已取消
我正在开发一个带有 Xamarin 表单的 Android 应用程序,该应用程序从 ASP.NET core webapi 获取数据。 但到目前为止,它似乎在以下行停止工作: HttpResponseMessage 响应 = 等待 cli...
在 Xamarin.Android 项目中找不到错误 APT2260 资源字体
我现在正在尝试寻找 Calligraphy 的替代品,因为我必须将我的项目升级到 API 级别 29。我对新端口没有任何运气,所以我正在尝试如下建议的本机解决方案: ...
我正在尝试滚动到布局底部。我有这段代码,但它不起作用 ScrollViewscrollView = view.FindViewById(Resource.Id.scrollViewHelper); ...
我正在尝试生成我的指纹,它应该在这里:~/.android/debug.keystore,但我那里什么都没有,尽管我也可以正常运行我的 monodroid 项目,那么如何才能我...
有没有办法在 VS CODE 而不是 Visual studio 2022 中开发和运行 Xamarin.forms 应用程序? 有人尝试过并成功吗
Android 中的 Xamarin.Forms 推送通知负载
嗨,我的 Android 项目中有一个推送通知处理程序。我的目标是为每个通知提供不同的有效负载。 问题是当我收到通知时 然后点击通知我...
Firebase Cloud 消息传递和 Azure 通知中心设备注册相互实现
我正在开发一个xamarin应用程序,我需要在其中实现通知。我们决定使用 azure 来管理它们,但是实际发送通知的是 firebase,因此设备需要...
将Fragment转换为Android.Support.V4.App.Fragment
我有这个代码: 使用Android.App; 使用 Android.Content; 使用Android操作系统; 使用 MvvmCross; 使用 MvvmCross.Droid.Support.V7.AppCompat; 使用 MvvmCross.Forms.Views; 使用 MvvmCross.ViewModels; 你...
在 Microsoft 宣布 Xamarin 现在将支持 iOS 17 和 Android 14 之后,我们现在正在寻求构建基于 Xamarin 的应用程序以针对这些较新的操作系统版本。 我们知道 Xa...
ViewHandler - InvalidOperationException:上下文不能为空 异常何时发生:导航到具有自定义控件的页面 平台:安卓 SDK:8.x 预览版 发生...
如何触发 SearchBar Xamarin 表单上的事件取消按钮
Xamarin 表单视图模型可以触发 Searchbar 的 onTextChange 事件,但没有 OnCancelButtonClicked 的事件处理程序。 我想要的是: 每当取消/关闭Bu...时都应该触发事件
无法访问依赖组件 - EMDK 条形码 - Android Work 配置文件 - Xamarin
我们正在开发一款具有条形码扫描功能的Android应用程序。我们使用 EMDK 进行条码扫描。我们的应用程序在 Zebra 移动手持设备 (MC33) 上运行。 我们目前面临一个问题...
我正在尝试更改 Xamarin 中 TextView Drawable 的颜色。 在Java中你可以这样做: @覆盖 protected void onCreate(Bundle savingInstanceState) { super.onCreate(savedInstanceSt...
Xamarin Android - 从尺寸文件设置 TextSize
我有一个 Xamarin Android 项目,其中使用尺寸文件来指定不同屏幕尺寸/分辨率的文本大小、填充、边距等。 我注意到有一个明显的
防止位置管理器在手机进入睡眠状态时停止位置更新 Xamarin.Android
我非常成功地启动了一项服务。但在这个服务中,我有一个位置管理器,我开始从 GPS 提供商获取位置更新。 位置管理器成功发送