mirror of
https://github.com/bitwarden/android.git
synced 2024-12-27 11:28:28 +03:00
PM-3349 PM-3350 Workaround to fix issues with text getting cropped/truncated when a Label has both Multiline and LinebreakMode set
This commit is contained in:
parent
80c424ed03
commit
0a628cc8a8
5 changed files with 51 additions and 2 deletions
|
@ -1,5 +1,6 @@
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Bit.App.Controls;
|
using Bit.App.Controls;
|
||||||
|
using Microsoft.Maui.Handlers;
|
||||||
|
|
||||||
namespace Bit.App.Handlers
|
namespace Bit.App.Handlers
|
||||||
{
|
{
|
||||||
|
@ -26,6 +27,23 @@ namespace Bit.App.Handlers
|
||||||
{
|
{
|
||||||
handler.PlatformView.ContentDescription = label.AutomationId;
|
handler.PlatformView.ContentDescription = label.AutomationId;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// WORKAROUND: There is an issue causing Multiline Labels that also have a LineBreakMode to not display text properly. (it truncates text on first line even with space available)
|
||||||
|
// MAUI Github Issue: https://github.com/dotnet/maui/issues/14125 and https://github.com/dotnet/maui/pull/14918
|
||||||
|
// When this gets fixed by MAUI these two Mapping below can be deleted, same for the UpdateMaxLines, TruncatedMultilineCustomLabel class and the equivalent Mappings on iOS
|
||||||
|
Microsoft.Maui.Handlers.LabelHandler.Mapper.AppendToMapping(nameof(Label.LineBreakMode), UpdateMaxLines);
|
||||||
|
Microsoft.Maui.Handlers.LabelHandler.Mapper.AppendToMapping(nameof(Label.MaxLines), UpdateMaxLines);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void UpdateMaxLines(ILabelHandler handler, ILabel label)
|
||||||
|
{
|
||||||
|
var textView = handler.PlatformView;
|
||||||
|
if(label is TruncatedMultilineCustomLabel controlsLabel
|
||||||
|
&& textView.Ellipsize == Android.Text.TextUtils.TruncateAt.End
|
||||||
|
&& controlsLabel.MaxLines != -1)
|
||||||
|
{
|
||||||
|
textView.SetMaxLines( controlsLabel.MaxLines );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
12
src/Core/Controls/TruncatedMultilineCustomLabel.cs
Normal file
12
src/Core/Controls/TruncatedMultilineCustomLabel.cs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
using Bit.App.Controls;
|
||||||
|
|
||||||
|
namespace Bit.App.Controls
|
||||||
|
{
|
||||||
|
// WORKAROUND: There is an issue causing Multiline Labels that also have a LineBreakMode to not display text properly. (it truncates text on first line even with space available)
|
||||||
|
// MAUI Github Issue: https://github.com/dotnet/maui/issues/14125 and https://github.com/dotnet/maui/pull/14918
|
||||||
|
// This class is used to be able to only add the workaround to this specific Label avoiding potential issues on other "normal" Label
|
||||||
|
// When this gets fixed by MAUI we can remove this class and some of the Mapping in LabelHandlerMappings
|
||||||
|
public class TruncatedMultilineCustomLabel : CustomLabel
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
|
@ -61,7 +61,7 @@
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Padding="16,12"
|
Padding="16,12"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<controls:CustomLabel
|
<controls:TruncatedMultilineCustomLabel
|
||||||
Text="{Binding AppInfo}"
|
Text="{Binding AppInfo}"
|
||||||
MaxLines="10"
|
MaxLines="10"
|
||||||
StyleClass="box-footer-label"
|
StyleClass="box-footer-label"
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
RowDefinitions="Auto,*"
|
RowDefinitions="Auto,*"
|
||||||
ColumnDefinitions="*,Auto"
|
ColumnDefinitions="*,Auto"
|
||||||
ColumnSpacing="10">
|
ColumnSpacing="10">
|
||||||
<controls:CustomLabel
|
<controls:TruncatedMultilineCustomLabel
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
MaxLines="2"
|
MaxLines="2"
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
using Bit.App.Controls;
|
using Bit.App.Controls;
|
||||||
|
using Microsoft.Maui.Handlers;
|
||||||
|
using UIKit;
|
||||||
|
|
||||||
namespace Bit.iOS.Core.Handlers
|
namespace Bit.iOS.Core.Handlers
|
||||||
{
|
{
|
||||||
|
@ -13,6 +15,23 @@ namespace Bit.iOS.Core.Handlers
|
||||||
handler.PlatformView.AccessibilityIdentifier = customLabel.AutomationId;
|
handler.PlatformView.AccessibilityIdentifier = customLabel.AutomationId;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// WORKAROUND: There is an issue causing Multiline Labels that also have a LineBreakMode to not display text properly. (it truncates text on first line even with space available)
|
||||||
|
// MAUI Github Issue: https://github.com/dotnet/maui/issues/14125 and https://github.com/dotnet/maui/pull/14918
|
||||||
|
// When this gets fixed by MAUI these two Mapping below can be deleted, same for the UpdateMaxLines, TruncatedMultilineCustomLabel class and the equivalent Mappings on Android
|
||||||
|
Microsoft.Maui.Handlers.LabelHandler.Mapper.AppendToMapping(nameof(Label.LineBreakMode), UpdateMaxLines);
|
||||||
|
Microsoft.Maui.Handlers.LabelHandler.Mapper.AppendToMapping(nameof(Label.MaxLines), UpdateMaxLines);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void UpdateMaxLines(ILabelHandler handler, ILabel label)
|
||||||
|
{
|
||||||
|
var textView = handler.PlatformView;
|
||||||
|
if(label is TruncatedMultilineCustomLabel controlsLabel
|
||||||
|
&& textView.LineBreakMode == UILineBreakMode.TailTruncation
|
||||||
|
&& controlsLabel.MaxLines != -1)
|
||||||
|
{
|
||||||
|
textView.Lines = controlsLabel.MaxLines;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue