Um dies zu erreichen, müssen wir zwei Dinge tun:
- Erhöhen Sie die Höhe des
Entry
in Xamarin.Forms
- ein iOS Benutzerdefinierte Renderer erstellen ausrichten der Text an der Unterseite des den Eintrag Höhe
UITextField
![enter image description here](https://i.stack.imgur.com/mMlxV.png)
erhöhen in Xamarin.Forms
In diesem Beispiel verwende ich RelativeLayout
, um die Höhe des gepolsterten Eintrags auf 50, Constraint.Constant(50)
festzulegen.
using System;
using Xamarin.Forms;
namespace CustomEntrySample
{
public class EntryWithTopPadding : Entry
{
}
public class App : Application
{
public App()
{
var normalEntry = new Entry
{
Text = "This Entry Has Normal Padding",
BackgroundColor = Color.Lime
};
var paddedEntry = new EntryWithTopPadding
{
Text = "This Entry Has Extra Top Padding",
BackgroundColor = Color.Aqua
};
var mainLayout = new RelativeLayout();
mainLayout.Children.Add(
normalEntry,
Constraint.Constant(0),
Constraint.RelativeToParent(parent => parent.Y + 10),
Constraint.RelativeToParent(parent => parent.Width)
);
mainLayout.Children.Add(
paddedEntry,
Constraint.Constant(0),
Constraint.RelativeToView(normalEntry, (parent, view) => view.Y + view.Height + 10),
Constraint.RelativeToParent(parent => parent.Width),
Constraint.Constant(50)
);
MainPage = new NavigationPage(
new ContentPage
{
Title = "Title",
Content = mainLayout,
Padding = new Thickness(10, 0, 10, 0)
}
);
}
}
}
Erstellen von benutzerdefinierten Renderer Text der Unterseite des UITextField
Set an Richten Sie die VerticalAlignment
Eigenschaft des UITextField
zu UIControlContentVerticalAlignment.Bottom
using UIKit;
using CustomEntrySample;
using CustomEntrySample.iOS;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ExportRenderer(typeof(EntryWithTopPadding), typeof(EntryWithTopPaddingCustomRenderer))]
namespace CustomEntrySample.iOS
{
public class EntryWithTopPaddingCustomRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if(Control == null)
return;
Control.VerticalAlignment = UIControlContentVerticalAlignment.Bottom;
}
}
}
Ich denke, man könnte mit Renderer vermeiden. Sie könnten versuchen, 'Margin' für' Entry' zu verwenden. Die zweite Sache ist vielleicht, dass Ihr 'Eintrag' oben keinen freien Platz hat, also konnte er diesen Einzug nicht hinzufügen. Könnten Sie Code hinzufügen, wie Sie Ihren "Eintrag" finden? –
Verwenden Sie Margin-Eigenschaft ' ' so z. 'Margin =" 0, 10, 0, 0 "' –
Ich muss Padding für den Text innerhalb des Eintrags setzen, also kann Rand nicht verwendet werden –