public TextLabel() : this(Interop.TextLabel.TextLabel_New__SWIG_0(), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- Layout = new TextLayout();
}
/// This will be public opened in next release of tizen after ACR done. Before ACR, it is used as HiddenAPI (InhouseAPI).
[EditorBrowsable(EditorBrowsableState.Never)]
public TextLabel(TextLabelStyle viewStyle) : this(Interop.TextLabel.TextLabel_New__SWIG_0(), true, viewStyle)
{
- Layout = new TextLayout();
}
/// <summary>
public TextLabel(bool shown) : this(Interop.TextLabel.TextLabel_New__SWIG_0(), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- Layout = new TextLayout();
SetVisible(shown);
}
public TextLabel(string text) : this(Interop.TextLabel.TextLabel_New__SWIG_1(text), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- Layout = new TextLayout();
}
/// <summary>
public TextLabel(string text, bool shown) : this(Interop.TextLabel.TextLabel_New__SWIG_1(text), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- Layout = new TextLayout();
SetVisible(shown);
}
}
/// <summary>
+ /// Create internal layout of TextLabel
+ /// </summary>
+ internal LayoutItem CreateTextLayout()
+ {
+ return new TextLayout();
+ }
+
+ /// <summary>
/// The TranslatableText property.<br />
/// The text can set the SID value.<br />
/// </summary>
else
{
// First Layout to be added to the View hence copy
-
// Do not try to set Margins or Padding on a null Layout (when a layout is being removed from a View)
- if (value !=null)
+ if (value != null)
{
- if (Margin.Top != 0 || Margin.Bottom !=0 || Margin.Start !=0 || Margin.End != 0)
+ if (Margin.Top != 0 || Margin.Bottom != 0 || Margin.Start != 0 || Margin.End != 0)
{
// If View already has a margin set then store it in Layout instead.
value.Margin = Margin;
- SetValue(MarginProperty, new Extents(0,0,0,0));
+ SetValue(MarginProperty, new Extents(0, 0, 0, 0));
NotifyPropertyChanged();
}
- if (Padding.Top != 0 || Padding.Bottom !=0 || Padding.Start !=0 || Padding.End != 0)
+ if (Padding.Top != 0 || Padding.Bottom != 0 || Padding.Start != 0 || Padding.End != 0)
{
// If View already has a padding set then store it in Layout instead.
value.Padding = Padding;
- SetValue(PaddingProperty, new Extents(0,0,0,0));
- NotifyPropertyChanged();
+ // If Layout is a LayoutItem then it could be a View that handles it's own padding.
+ // Let the View keeps it's padding. Still store Padding in Layout to reduce code paths.
+ if (typeof(LayoutGroup).IsAssignableFrom(value.GetType())) // If a Layout container of some kind.
+ {
+ SetValue(PaddingProperty, new Extents(0, 0, 0, 0));
+ NotifyPropertyChanged();
+ }
}
}
}
{
// If child of this layout is a pure View then assign it a LayoutGroup
// If the child is derived from a View then it may be a legacy or existing container hence will do layouting itself.
- child.Layout = new AbsoluteLayout();
+ child.Layout = (child as TextLabel)?.CreateTextLayout() ?? new AbsoluteLayout();
}
}
else
// Layout takes ownership of it's owner's children.
foreach (View view in Owner.Children)
{
+ if (view is TextLabel)
+ {
+ view.Layout = (view as TextLabel)?.CreateTextLayout();
+ }
AddChildToLayoutGroup(view);
}