@@ -261,45 +261,58 @@ void UpdateBadgeViewPlacement(bool force = false)
261
261
if ( placementDone )
262
262
return ;
263
263
264
- const double Padding = 6 ;
264
+ var containerMargin = new Thickness ( 0 ) ;
265
+ var contentMargin = new Thickness ( 0 ) ;
265
266
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
+ }
267
276
268
- BadgeIndicatorBackground . HeightRequest = size / 1.5 ;
277
+ BadgeIndicatorContainer . Margin = containerMargin ;
278
+ BadgeContent . Margin = contentMargin ;
279
+ placementDone = true ;
280
+ }
269
281
282
+ Tuple < Thickness , Thickness > GetMargins ( double size )
283
+ {
270
284
double verticalMargin ;
271
285
double horizontalMargin ;
272
-
286
+ var containerMargin = new Thickness ( 0 ) ;
287
+ var contentMargin = new Thickness ( 0 ) ;
273
288
switch ( BadgePosition )
274
289
{
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 ;
281
290
case BadgePosition . TopRight :
282
291
verticalMargin = size / 2 ;
283
292
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 ) ;
286
295
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 :
288
302
verticalMargin = size / 2 ;
289
303
var bottomLeftverticalMargin = BadgeContent . Height - verticalMargin ;
290
- BadgeIndicatorContainer . Margin = new Thickness ( 0 , bottomLeftverticalMargin , 0 , 0 ) ;
304
+ containerMargin = new Thickness ( 0 , bottomLeftverticalMargin , 0 , 0 ) ;
291
305
BadgeContent . Margin = new Thickness ( verticalMargin , 0 , 0 , 0 ) ;
292
306
break ;
293
- case BadgePosition . BottomRight :
307
+ case BadgePosition . BottomLeft :
294
308
verticalMargin = size / 2 ;
295
309
var bottomRightverticalMargin = BadgeContent . Height - verticalMargin ;
296
310
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 ) ;
299
313
break ;
300
314
}
301
-
302
- placementDone = true ;
315
+ return new Tuple < Thickness , Thickness > ( containerMargin , contentMargin ) ;
303
316
}
304
317
305
318
async Task UpdateVisibilityAsync ( )
0 commit comments