Skip to content

Instantly share code, notes, and snippets.

View HeikkiDev's full-sized avatar

Enrique Ramos Vargas HeikkiDev

View GitHub Profile
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.IO;
using System.Security.Claims;
using System.Security.Cryptography;
using Microsoft.IdentityModel.Tokens;
namespace FirebaseTest.Mobile.Helpers
{
@HeikkiDev
HeikkiDev / iOSTabbedRenderer.cs
Created July 5, 2021 11:39
Modify TabBar on iOS TabbedRenderer
public override void ViewWillAppear(bool animated)
{
if (TabBar.Items == null)
{
return;
}
foreach (UITabBarItem tabItem in TabBar.Items)
{
UpdateTabBarItemAppearance(tabItem);
@HeikkiDev
HeikkiDev / AndroidTabbedPageRenderer.cs
Created July 5, 2021 11:38
Modify TabBar on Android TabbedPageRenderer
protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e)
{
base.OnElementChanged(e);
if (Element == null || e.OldElement != null)
{
return;
}
if(Element.OnThisPlatform().GetToolbarPlacement() != ToolbarPlacement.Bottom)
@HeikkiDev
HeikkiDev / PlatformInfoService.cs
Created May 17, 2021 14:18
Measure Label width on platform (Android and iOS)
// ANDROID
public double GetStringWidthMeasure(string stringToMeasure)
{
using (var bounds = new Android.Graphics.Rect())
{
using (var textView = new TextView(Application.Context))
{
var lineCount = textView.LineCount; // line count, I guess!
textView.Paint?.GetTextBounds(stringToMeasure, 0, stringToMeasure.Length, bounds);
var displayMetrics = new DisplayMetrics();
[assembly: ExportRenderer(typeof(YourCustomWebView), typeof(yourcompany.Droid.Renderers.ChromeClientWebViewRenderer))]
namespace yourcompany.Droid.Renderers
{
internal class ChromeClientWebViewRenderer : WebViewRenderer
{
public AdvancedWebViewRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
@HeikkiDev
HeikkiDev / RoundedWebViewAndroidRenderer.cs
Created March 25, 2021 12:26
Rounded corners WebView Renderer for Android using Canvas.ClipPath
internal class AdvancedWebViewRenderer : WebViewRenderer
{
private readonly float _density;
public AdvancedWebViewRenderer(Context context) : base(context)
{
var displayMetrics = new DisplayMetrics();
CrossCurrentActivity.Current.Activity.WindowManager.DefaultDisplay.GetMetrics(displayMetrics);
_density = displayMetrics.Density;
}
@HeikkiDev
HeikkiDev / iosAppWithFirebaseAnalytics.csproj
Created March 24, 2021 15:44
Enable Firebase Analytics DebugView for iOS directly on project file. You can't do it on project properties on Rider.
<PropertyGroup Condition=" '$(RunConfiguration)' == 'Default' ">
<AppExtensionDebugBundleId />
<ExtraLaunchArgs>--argument=-FIRDebugEnabled</ExtraLaunchArgs> // Add this line!
</PropertyGroup>
@HeikkiDev
HeikkiDev / CustomRadioButtonIcon.xaml
Last active March 24, 2021 15:42
Use of custom shape for RadioButton selected/unselected icon
<ContentPage.Resources>
<ControlTemplate x:Key="RadioButtonTemplate">
<StackLayout HorizontalOptions="FillAndExpand"
VerticalOptions="Center"
Padding="5"
Margin="5">
<VisualStateManager.VisualStateGroups>
<VisualStateGroupList>
<VisualStateGroup x:Name="CheckedStates">
<VisualState x:Name="Checked">
@HeikkiDev
HeikkiDev / AdvancedTabbedPageRenderer.cs
Last active March 10, 2021 14:17
Fix blank space on iOS TabbedPage when TabBar is hidden
public class AdvancedTabbedPageRenderer : TabbedRenderer
{
private Rectangle _initialContainerArea;
public override void ViewDidLayoutSubviews()
{
base.ViewDidLayoutSubviews();
if (View == null)
{
return;
@HeikkiDev
HeikkiDev / iOSPageRenderer.cs
Created February 23, 2021 11:06
Enable swipe back navigation on iOS while using custom NavigationPage.TitleView or navigation bar is hidden
// [assembly: ExportRenderer...
internal class AdvancedContentPageRenderer : PageRenderer
{
public override void ViewDidAppear(bool animated)
{
base.ViewDidAppear(animated);
ViewController.NavigationController.InteractivePopGestureRecognizer.Enabled = true;
ViewController.NavigationController.InteractivePopGestureRecognizer.WeakDelegate = ViewController;
}