Я пишу приложение Форм. Как позиционировать представление прямо в нижней части экрана и когда какая-то запись сфокусирована и клавиатура видна, вид будет прямо над клавиатурой? На андроиде можно установить Window.SetSoftInputMode(SoftInput.AdjustResize)
, и это сделает размер Content
каждый раз, когда клавиатура появляется/исчезает. Однако мне нужно, чтобы строка состояния была прозрачной, а SoftInput.AdjustResize
не работает с WindowManagerFlags.TranslucentStatus
. Мой вопрос: как разместить положение над клавиатурой без установки SoftInput.AdjustResize
?Как разместить изображение прямо над клавиатурой?
Возьмем такой пример:
public Page1()
{
InitializeComponent();
var al = new StackLayout
{
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand
};
var button = new BoxView {Color = Color.Red, VerticalOptions = LayoutOptions.EndAndExpand};
var entry = new Entry {HorizontalOptions = LayoutOptions.Fill};
al.Children.Add(entry);
al.Children.Add(button);
Content = al;
Content.SizeChanged += (sender, args) =>
{
button.Layout(new Rectangle(0, Content.Height - 120, App.Dimensions.Width, 120));
};
}
Если запустить этот код, когда вы будете нажимать на ввод, ничего не изменится, то «кнопки» будет оставаться на нижней части экрана не видны из-за накладывающаяся клавиатура.
Если мы добавим Window.SetSoftInputMode(SoftInput.AdjustResize)
в MainActivity's onCreate, он отлично работает, коробка перемещается над клавиатурой на фокусе входа.
Кроме того, если мы изменим Content = al;
на Content = new ScrollView {Content = al};
, он отлично работает.
Однако, если мы добавим Window.AddFlags(WindowManagerFlags.TranslucentStatus);
в onCreate MainActivity, ни один из этих методов больше не работает.
Заранее спасибо.
Я использую плагин KeyboardOverlap https://www.nuget.org/packages/Xam.Plugins.Forms.KeyboardOverlap/ – Vaikesh
Попробуйте что-то вроде SoftInput.AdjustPan – Vaikesh
настроить панорамирование ничего не изменит. первая ссылка не имеет ничего общего с Android. – nicks