2017-11-28 5 views
0

[Xamarin.Forms 2.5.0.91635] [Android 5,6,7,8]Xamarin.Forms: Soft-Tastatur überlappt den letzten Eintrag am Ende der Seite (beim Scrollen)

Ich habe eine Seite, die hat eine Listenansicht, die einen Eingabeeintrag und ein Label enthält. Mein Problem ist, dass in Android beim Tippen auf den ersten oder zweiten Eintrag die Tastatur erscheint. Ich möchte, dass die Seite nach unten scrollt, um den letzten Eintrag auszuwählen, aber ich kann den letzten Eintrag nicht sehen (oder fokussieren), weil er von der Tastatur überlagert wird. Ich kann nicht zum letzten Eintrag blättern, wenn die Soft-Tastatur aktiviert/sichtbar ist, weil die Soft-Tastatur die letzten Einträge verdeckt. Ich kann zum letzten Eintrag blättern, wenn ich die Soft-Tastatur ein-/ausgeblendet habe, aber das möchte ich nicht!

Ich suchte im Internet und versuchte viel, aber nichts funktioniert.

Lösungen, die nicht funktionierten: https://gist.github.com/jimmgarrido/e36033b26f01e8da091fd321d41d991a xamarinformscorner.blogspot.nl/2016/06/soft-keyboard-hiding-entries-fields-in.html https://forums.xamarin.com/discussion/62668/appcompat-does-not-resize-screen-with-keyboard

<ContentPage.Content> 
     <ScrollView> 
       <StackLayout x:Name="StackLayoutButtons" HorizontalOptions="Center" Orientation="Horizontal"> 
        <Button x:Name="PreviousButton" WidthRequest="35" FontSize="23" FontAttributes="Bold" Clicked="PreviousButton_OnClicked"></Button> 
        <Button x:Name="DatePickerButton" FontSize="20" Clicked="DatePickerButton_OnClicked"></Button> 
        <DatePicker x:Name="DatePicker" Format="dddd d MMMM yyyy" VerticalOptions="Center" HorizontalOptions="FillAndExpand" IsVisible="False" IsEnabled="False"/> 
        <Button x:Name="NextButton" WidthRequest="35" FontSize="23" FontAttributes="Bold" Clicked="NextButton_OnClicked"></Button> 
        <Button x:Name="LastButton" WidthRequest="50" FontSize="23" FontAttributes="Bold" Clicked="LastButton_OnClicked"></Button> 
       </StackLayout> 

       <ListView x:Name="ListViewItemPage" ItemTapped="ListView_OnItemTapped"> 
        <ListView.ItemTemplate> 
         <DataTemplate> 
          <ViewCell> 
           <RelativeLayout x:Name="RelativeLayout" > 
            <Label x:Name="DescriptionLabel" Text="{Binding Description}" RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Y, Factor=0, Constant=15}" RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent, Property=X, Factor=0, Constant=15}" /> 
            <Entry x:Name="Entry" WidthRequest="85" Keyboard="Text" HorizontalTextAlignment="Start" FontSize="19" HorizontalOptions="Center" VerticalOptions="Center" Text="{Binding Value, Mode=TwoWay, Converter={StaticResource FloatValueConverter}}" Unfocused="ValueEntry_OnUnfocused" 
              RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Y, Factor=0, Constant=10}" RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width, Factor=1, Constant={StaticResource ConstantMultiPlatform}}" > 
             <Entry.HeightRequest> 
              <OnPlatform x:TypeArguments="x:Double"> 
               <On Platform="iOS" Value="28"></On> 
               <On Platform="Android" Value="42"></On> 
               <On Platform="UWP" Value="32"></On> 
              </OnPlatform> 
             </Entry.HeightRequest> 
            </Entry> 
           </RelativeLayout> 
          </ViewCell> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
       </ListView> 
      </StackLayout> 
     </ScrollView> 
    </ContentPage.Content> 
für diesen Fehler

Normal view (last entry) When first entry focused and scrolled all the way down

Vielleicht hat hier jemand eine funktionierende Lösung/Abhilfe?

+0

https://stackoverflow.com/questions/31172518/how-do-i-keep -the-keyboard-from-covering-my-ui-statt-von-resizing-it https://stackoverflow.com/questions/34863615/dynamical-move-entry-xamarin-forms?rq=1 – Dan

Antwort

0

Versuchen Sie, die MainActivity in Ihrem droid-Projekt öffnen und fügen Sie "WindowSoftInputMode = SoftInput.AdjustResize" wie folgt aus:

[Activity(
    Label = "Sample", 
    Icon = "@drawable/icon", 
    Theme = "@style/MyTheme", 
    MainLauncher = true, 
    WindowSoftInputMode = SoftInput.AdjustResize, 
    ScreenOrientation = ScreenOrientation.Portrait, 
    ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 
    public class MainActivity.... 
    { 
     ... 
    } 
+0

Danke, aber es funktioniert nicht. Ich habe bereits SoftInput.AdjustResize und SoftInput.AdjustPan verwendet. Keine dieser Eigenschaften funktioniert. – E75

+0

@ E75 eine andere Problemumgehung (ziemlich hässlich nebenbei) ist ein BoxView hinzufügen, bevor Sie die ScrollView mit BackgroundColor = "Transparent" schließen und in Code hinter die Höhe ändern, wenn ein Eintrag fokussiert ist. – FabriBertani