Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.

Commit d41a3b0

Browse files
Rabosa616Oscar Vaquerojsuarezruiz
authored
Fix the wrong assignation of margins when the text is assigned (#552)
* Fix the wrong assignation of margins when the text is assigned Remove margins when the badge is not shown * do not remove the margins even if there is no text Co-authored-by: Oscar Vaquero <[email protected]> Co-authored-by: Javier Suárez <[email protected]>
1 parent c030809 commit d41a3b0

File tree

1 file changed

+32
-19
lines changed

1 file changed

+32
-19
lines changed

XamarinCommunityToolkit/Views/BadgeView/BadgeView.shared.cs

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -261,45 +261,58 @@ void UpdateBadgeViewPlacement(bool force = false)
261261
if (placementDone)
262262
return;
263263

264-
const double Padding = 6;
264+
var containerMargin = new Thickness(0);
265+
var contentMargin = new Thickness(0);
265266

266-
var size = Math.Max(BadgeText.Height, BadgeText.Width) + Padding;
267+
if (BadgeIndicatorContainer.IsVisible)
268+
{
269+
const double Padding = 6;
270+
var size = Math.Max(BadgeText.Height, BadgeText.Width) + Padding;
271+
BadgeIndicatorBackground.HeightRequest = size;
272+
var margins = GetMargins(size);
273+
containerMargin = margins.Item1;
274+
contentMargin = margins.Item2;
275+
}
267276

268-
BadgeIndicatorBackground.HeightRequest = size / 1.5;
277+
BadgeIndicatorContainer.Margin = containerMargin;
278+
BadgeContent.Margin = contentMargin;
279+
placementDone = true;
280+
}
269281

282+
Tuple<Thickness, Thickness> GetMargins(double size)
283+
{
270284
double verticalMargin;
271285
double horizontalMargin;
272-
286+
var containerMargin = new Thickness(0);
287+
var contentMargin = new Thickness(0);
273288
switch (BadgePosition)
274289
{
275-
case BadgePosition.TopLeft:
276-
verticalMargin = size / 2;
277-
horizontalMargin = BadgeContent.Width + verticalMargin;
278-
BadgeIndicatorContainer.Margin = new Thickness(0, 0, horizontalMargin, 0);
279-
BadgeContent.Margin = new Thickness(verticalMargin, verticalMargin, 0, 0);
280-
break;
281290
case BadgePosition.TopRight:
282291
verticalMargin = size / 2;
283292
horizontalMargin = BadgeContent.Width - verticalMargin;
284-
BadgeIndicatorContainer.Margin = new Thickness(horizontalMargin, 0, 0, 0);
285-
BadgeContent.Margin = new Thickness(0, verticalMargin, 0, 0);
293+
containerMargin = new Thickness(horizontalMargin, 0, 0, 0);
294+
contentMargin = new Thickness(0, verticalMargin, verticalMargin, 0);
286295
break;
287-
case BadgePosition.BottomLeft:
296+
case BadgePosition.TopLeft:
297+
verticalMargin = size / 2;
298+
containerMargin = new Thickness(0, 0, 0, 0);
299+
contentMargin = new Thickness(verticalMargin, verticalMargin, 0, 0);
300+
break;
301+
case BadgePosition.BottomRight:
288302
verticalMargin = size / 2;
289303
var bottomLeftverticalMargin = BadgeContent.Height - verticalMargin;
290-
BadgeIndicatorContainer.Margin = new Thickness(0, bottomLeftverticalMargin, 0, 0);
304+
containerMargin = new Thickness(0, bottomLeftverticalMargin, 0, 0);
291305
BadgeContent.Margin = new Thickness(verticalMargin, 0, 0, 0);
292306
break;
293-
case BadgePosition.BottomRight:
307+
case BadgePosition.BottomLeft:
294308
verticalMargin = size / 2;
295309
var bottomRightverticalMargin = BadgeContent.Height - verticalMargin;
296310
horizontalMargin = BadgeContent.Width - verticalMargin;
297-
BadgeIndicatorContainer.Margin = new Thickness(horizontalMargin, bottomRightverticalMargin, 0, 0);
298-
BadgeContent.Margin = new Thickness(0, 0, 0, verticalMargin);
311+
containerMargin = new Thickness(horizontalMargin, bottomRightverticalMargin, 0, 0);
312+
contentMargin = new Thickness(0, 0, verticalMargin, 0);
299313
break;
300314
}
301-
302-
placementDone = true;
315+
return new Tuple<Thickness, Thickness>(containerMargin, contentMargin);
303316
}
304317

305318
async Task UpdateVisibilityAsync()

0 commit comments

Comments
 (0)