diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/ItemImageSourceShouldBeVisible.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/ItemImageSourceShouldBeVisible.png
new file mode 100644
index 000000000000..34fe4a3ec89b
Binary files /dev/null and b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/ItemImageSourceShouldBeVisible.png differ
diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue18806.xaml b/src/Controls/tests/TestCases.HostApp/Issues/Issue18806.xaml
new file mode 100644
index 000000000000..4644e8580946
--- /dev/null
+++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue18806.xaml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue18806.xaml.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue18806.xaml.cs
new file mode 100644
index 000000000000..c26d2bfdade6
--- /dev/null
+++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue18806.xaml.cs
@@ -0,0 +1,19 @@
+using System.ComponentModel;
+
+namespace Maui.Controls.Sample.Issues
+{
+ [Issue(IssueTracker.Github, 18806, "SwipeItemView won't render FontImageSource on first opening", PlatformAffected.Android)]
+ public partial class Issue18806 : ContentPage
+ {
+ public Issue18806()
+ {
+ InitializeComponent();
+ }
+
+ private void Button_Clicked(object sender, EventArgs e)
+ {
+ swipeView1.Open(OpenSwipeItem.RightItems, false);
+ swipeView2.Open(OpenSwipeItem.LeftItems, false);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue18806.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue18806.cs
new file mode 100644
index 000000000000..f6ec5664642f
--- /dev/null
+++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue18806.cs
@@ -0,0 +1,24 @@
+using NUnit.Framework;
+using UITest.Appium;
+using UITest.Core;
+
+namespace Microsoft.Maui.TestCases.Tests.Issues;
+
+public class Issue18806 : _IssuesUITest
+{
+ public Issue18806(TestDevice testDevice) : base(testDevice)
+ {
+ }
+
+ public override string Issue => "SwipeItemView won't render FontImageSource on first opening";
+
+ [Test]
+ [Category(UITestCategories.SwipeView)]
+ public void ItemImageSourceShouldBeVisible()
+ {
+ App.WaitForElement("button");
+ App.Tap("button");
+
+ VerifyScreenshot();
+ }
+}
\ No newline at end of file
diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/ItemImageSourceShouldBeVisible.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/ItemImageSourceShouldBeVisible.png
new file mode 100644
index 000000000000..c72249a74057
Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/ItemImageSourceShouldBeVisible.png differ
diff --git a/src/Core/src/Platform/Android/MauiSwipeView.cs b/src/Core/src/Platform/Android/MauiSwipeView.cs
index 605bb66f7106..e164453bb413 100644
--- a/src/Core/src/Platform/Android/MauiSwipeView.cs
+++ b/src/Core/src/Platform/Android/MauiSwipeView.cs
@@ -76,6 +76,16 @@ protected override void OnAttachedToWindow()
_viewPagerParent = Control.Parent.GetParentOfType();
}
+ protected override void OnLayout(bool changed, int left, int top, int right, int bottom)
+ {
+ base.OnLayout(changed, left, top, right, bottom);
+
+ if (_contentView is null || _actionView is null || GetNativeSwipeItems() is not {Count: > 0} swipeItems)
+ return;
+
+ LayoutSwipeItems(swipeItems);
+ }
+
public override bool OnTouchEvent(MotionEvent? e)
{
base.OnTouchEvent(e);
diff --git a/src/Core/src/PublicAPI/net-android/PublicAPI.Unshipped.txt b/src/Core/src/PublicAPI/net-android/PublicAPI.Unshipped.txt
index 3c5043bebaf0..020fe1313583 100644
--- a/src/Core/src/PublicAPI/net-android/PublicAPI.Unshipped.txt
+++ b/src/Core/src/PublicAPI/net-android/PublicAPI.Unshipped.txt
@@ -63,6 +63,7 @@ override Microsoft.Maui.Handlers.HybridWebViewHandler.DisconnectHandler(Android.
override Microsoft.Maui.Platform.MauiAppCompatEditText.OnSelectionChanged(int selStart, int selEnd) -> void
override Microsoft.Maui.Platform.MauiHybridWebViewClient.Dispose(bool disposing) -> void
override Microsoft.Maui.Platform.MauiHybridWebViewClient.ShouldInterceptRequest(Android.Webkit.WebView? view, Android.Webkit.IWebResourceRequest? request) -> Android.Webkit.WebResourceResponse?
+override Microsoft.Maui.Platform.MauiSwipeView.OnLayout(bool changed, int left, int top, int right, int bottom) -> void
override Microsoft.Maui.Platform.MauiWebViewClient.OnRenderProcessGone(Android.Webkit.WebView? view, Android.Webkit.RenderProcessGoneDetail? detail) -> bool
static Microsoft.Maui.ElementHandlerExtensions.GetRequiredService(this Microsoft.Maui.IElementHandler! handler, System.Type! type) -> T
static Microsoft.Maui.ElementHandlerExtensions.GetRequiredService(this Microsoft.Maui.IElementHandler! handler) -> T