Skip to content

Commit 196a1d6

Browse files
authored
[Android] Fixed the ScrollbarVisibility issues (#27613)
* [Android] Fixed the ScrollbarVisibility issues * Committed the review changes and added additional test * Renamed Variable
1 parent 0529a3d commit 196a1d6

File tree

2 files changed

+76
-3
lines changed

2 files changed

+76
-3
lines changed

src/Core/src/Platform/Android/MauiScrollView.cs

+6-3
Original file line numberDiff line numberDiff line change
@@ -63,19 +63,23 @@ public void SetHorizontalScrollBarVisibility(ScrollBarVisibility scrollBarVisibi
6363
}
6464

6565
_hScrollView.HorizontalScrollBarEnabled = scrollBarVisibility == ScrollBarVisibility.Always;
66+
_hScrollView.ScrollbarFadingEnabled = _horizontalScrollVisibility != ScrollBarVisibility.Always;
67+
PlatformInterop.RequestLayoutIfNeeded(this);
6668
}
6769

6870
public void SetVerticalScrollBarVisibility(ScrollBarVisibility scrollBarVisibility)
6971
{
72+
ScrollBarVisibility verticalScrollVisibility = scrollBarVisibility;
73+
7074
if (_defaultVerticalScrollVisibility == 0)
7175
_defaultVerticalScrollVisibility = VerticalScrollBarEnabled ? ScrollBarVisibility.Always : ScrollBarVisibility.Never;
7276

7377
if (scrollBarVisibility == ScrollBarVisibility.Default)
7478
scrollBarVisibility = _defaultVerticalScrollVisibility;
7579

7680
VerticalScrollBarEnabled = scrollBarVisibility == ScrollBarVisibility.Always;
77-
78-
this.HandleScrollBarVisibilityChange();
81+
ScrollbarFadingEnabled = verticalScrollVisibility != ScrollBarVisibility.Always;
82+
PlatformInterop.RequestLayoutIfNeeded(this);
7983
}
8084

8185
public void SetContent(View content)
@@ -428,7 +432,6 @@ public override bool HorizontalScrollBarEnabled
428432
set
429433
{
430434
base.HorizontalScrollBarEnabled = value;
431-
this.HandleScrollBarVisibilityChange();
432435
}
433436
}
434437

src/Core/tests/DeviceTests/Handlers/ScrollView/ScrollViewHandlerTests.Android.cs

+70
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,76 @@ public async Task VerticalVisibilityInitializesCorrectly(ScrollBarVisibility vis
102102
Assert.Equal(expected, result);
103103
}
104104

105+
[Theory]
106+
[InlineData(ScrollBarVisibility.Always, false)]
107+
[InlineData(ScrollBarVisibility.Default, true)]
108+
[InlineData(ScrollBarVisibility.Never, true)]
109+
public async Task VerticalScrollbarFadingInitializesCorrectly(ScrollBarVisibility visibility, bool expected)
110+
{
111+
bool result = await InvokeOnMainThreadAsync(() =>
112+
{
113+
var scrollView = new ScrollViewStub()
114+
{
115+
Orientation = ScrollOrientation.Vertical,
116+
VerticalScrollBarVisibility = visibility
117+
};
118+
119+
var scrollViewHandler = CreateHandler(scrollView);
120+
121+
return ((MauiScrollView)scrollViewHandler.PlatformView).ScrollbarFadingEnabled;
122+
});
123+
124+
Assert.Equal(expected, result);
125+
}
126+
127+
[Theory]
128+
[InlineData(ScrollBarVisibility.Always, false)]
129+
[InlineData(ScrollBarVisibility.Default, true)]
130+
[InlineData(ScrollBarVisibility.Never, true)]
131+
public async Task HorizontalScrollbarFadingInitializesCorrectly(ScrollBarVisibility visibility, bool expected)
132+
{
133+
bool result = await InvokeOnMainThreadAsync(() =>
134+
{
135+
var scrollView = new ScrollViewStub()
136+
{
137+
Orientation = ScrollOrientation.Horizontal,
138+
HorizontalScrollBarVisibility = visibility
139+
};
140+
141+
var scrollViewHandler = CreateHandler(scrollView);
142+
143+
return ((MauiHorizontalScrollView)scrollViewHandler.PlatformView.GetChildAt(0)).ScrollbarFadingEnabled;
144+
});
145+
146+
Assert.Equal(expected, result);
147+
}
148+
149+
[Theory]
150+
[InlineData(ScrollBarVisibility.Always, false)]
151+
[InlineData(ScrollBarVisibility.Default, true)]
152+
[InlineData(ScrollBarVisibility.Never, true)]
153+
public async Task VerticalandHorizontalScrollbarFadingInitializesCorrectlyOnBothOrientation(ScrollBarVisibility visibility, bool expected)
154+
{
155+
bool result = await InvokeOnMainThreadAsync(() =>
156+
{
157+
var scrollView = new ScrollViewStub()
158+
{
159+
Orientation = ScrollOrientation.Both,
160+
HorizontalScrollBarVisibility = visibility,
161+
VerticalScrollBarVisibility = visibility
162+
};
163+
164+
var scrollViewHandler = CreateHandler(scrollView);
165+
166+
var horizontalScrollView = (MauiHorizontalScrollView)scrollViewHandler.PlatformView.GetChildAt(0);
167+
var verticalScrollView = (MauiScrollView)scrollViewHandler.PlatformView;
168+
169+
return horizontalScrollView.ScrollbarFadingEnabled && verticalScrollView.ScrollbarFadingEnabled;
170+
});
171+
172+
Assert.Equal(expected, result);
173+
}
174+
105175
[Fact]
106176
public async Task MauiScrollViewGetsFullHeightInHorizontalOrientation()
107177
{

0 commit comments

Comments
 (0)