간단한 레이아웃이 Entry와 Button으로 구성되어 있습니다. 목표는 Button을 맨 아래에 배치하고 Entry를 나머지 공간의 가운데에 배치하는 것입니다. 모든 것은 처음부터 작동합니다. 다음은 레이아웃과 스크린 샷입니다.소프트 키보드가 표시/숨길 때 ScrollView의 레이아웃이 잘못 업데이트됩니다.
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
NavigationPage.HasNavigationBar="False"
x:Class="ParentAdda.Pages.Test">
<ScrollView x:Name="Qq" Orientation="Vertical" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
<StackLayout x:Name="Ww" Orientation="Vertical" VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand">
<BoxView VerticalOptions="FillAndExpand" HeightRequest="0" BackgroundColor="Aquamarine" />
<Entry
FontSize="Medium"
Placeholder="+111111111"
HorizontalOptions="FillAndExpand"
Keyboard="Telephone" />
<BoxView VerticalOptions="FillAndExpand" HeightRequest="0" BackgroundColor="Coral" />
<Button Text="Update" Clicked="Button_OnClicked"
HorizontalOptions="Fill"
BorderRadius="20"
BackgroundColor="Lime"
TextColor="White"
FontSize="Large"
FontAttributes="Bold" />
</StackLayout>
</ScrollView>
</ContentPage>
나는 또한 태그가 FormsAppCompatActivity
를 사용하는 경우 매니페스트에 설정하면 이동하려면 재설정되면 계정에 Xamarin.Forms의 버그를 고려하여 코드에서 (안드로이드 프로젝트에 크기를 조정할 수 WindowSoftInputMode을 설정하고)
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
//https://bugzilla.xamarin.com/show_bug.cgi?id=39765
App.Current.On<Xamarin.Forms.PlatformConfiguration.Android>().UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize);
//https://bugzilla.xamarin.com/show_bug.cgi?id=39765
//Remove the status bar underlay in API 21+
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
{
Window.DecorView.SystemUiVisibility = 0;
var statusBarHeightInfo = typeof(FormsAppCompatActivity).GetField("_statusBarHeight", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
statusBarHeightInfo?.SetValue(this, 0);
Window.SetStatusBarColor(Android.Graphics.Color.Black);
}
}
항목 이익이 집중하면 소프트 키보드가 표시 될 때 내가) 맨 아래로 스크롤 할 수 있지만, 페이지가 (크기가 조정되지
,
소프트 키보드가 숨겨지면 내용의 크기가 잘못 조정되어 화면의 일부만 차지합니다.
소프트 키보드가 보이지 않거나 보이지 않게되기 전에 경계를 기반으로 레이아웃 프로세스가 수행되는 것처럼 보입니다. 그러나 모든 Bounds
속성 (Page, ScrollView 및 StackLayout)뿐만 아니라 ContentSize
ScrollView 속성이 정확한 숫자 값을 가지고있는 것으로 보입니다 (버튼 클릭 처리기에서 해당 값을 추적했습니다). 나는 행운을 내지 않고 동일한 버튼 클릭 핸들러에서 다른 요소에 ForceLayout()
을 호출하려고 시도했다.
누구든지이 문제를 해결하는 방법을 알고 있습니까?