Я только что наткнулся на этот вопрос при написании крошечного приложения для чата, которое в основном содержит прокручиваемый список сообщений, текстовую запись и кнопку отправки:
![](https://i.stack.imgur.com/v0TQU.png)
![](https://i.stack.imgur.com/jVNWl.png)
Проблема с ранее опубликованным решением заключается в том, что вам нужно будет вложить два вида прокрутки, что не рекомендуется Документация Xamarin.Forms. Чтобы клавиатура не скрывала запись, я нашел следующий взлом:
Я добавляю placeholder
в конец макета основного стека. В зависимости от того, находится ли запись в фокусе (т.е. клавиатура видна или нет), высота заполнителя устанавливается равной 0 или высоте клавиатуры.
// HACK: make entry visible when keyboard open
var placeholder = new BoxView {
HeightRequest = 0,
};
entry.Focused += (sender, e) => placeholder.HeightRequest = 210;
entry.Unfocused += (sender, e) => placeholder.HeightRequest = 0;
Content = new StackLayout {
VerticalOptions = LayoutOptions.Fill,
Padding = 5,
Children = {
whoTable,
messageScrollView,
new StackLayout {
Orientation = StackOrientation.Horizontal,
VerticalOptions = LayoutOptions.End,
HeightRequest = 70,
Children = {
entry,
sendButton,
},
},
placeholder,
},
};
Конечно, это не идеально. Особенно жестко запрограммированная высота клавиатуры должна быть реализована более элегантно. И, вероятно, вам следует применять его только на iOS, а не на Android.
person
Falko
schedule
21.08.2014