Aby to osiągnąć, musimy zrobić dwie rzeczy:
- zwiększyć wysokość
Entry
w Xamarin.Forms
- Załóż iOS niestandardowy Renderer, aby wyrównać tekst do dołu
UITextField
Zwiększ wysokość wpisu w Xamarin.Forms
W tym przykładzie używam RelativeLayout
do ustawienia wysokości wyściełanego wejścia na 50, Constraint.Constant(50)
.
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)
}
);
}
}
}
Tworzenie niestandardowej Renderer, aby wyrównać tekst do dna UITextField
Ustaw właściwość UITextField
VerticalAlignment
do 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;
}
}
}
myślę, można uniknąć stosując renderujący. Możesz spróbować użyć 'Margin' dla' Entry'. Drugą rzeczą jest to, że Twój "wpis" nie ma wolnej przestrzeni u góry, więc nie mógł dodać tego wcięcia. Czy możesz dodać kod, jak zlokalizować swój "wpis"? –
Użyj właściwości margin ' ' so np. 'Margin =" 0, 10, 0, 0 "' –
Potrzebuję ustawić dopełnienie dla tekstu wewnątrz wpisu, więc nie można użyć marginesu –