2017-03-02 78 views
5

Bir Xamarin.Forms sohbet uygulaması yazmaya çalışıyordum. Sorun şudur: Android'de, klavye gösterildiğinde tüm sayfa (ActionBar dahil) yukarı doğru hareket eder. Sayfayı yeniden boyutlandıran bir NuGet paketi kullanarak IOS'daki sorunu giderebilirim.Xamarin Forms Android Klavye tümüyle yukarı taşıyor

Android projesinde MainActivity.cs uygulamasında WindowSoftInputMode = Android.Views.SoftInput.AdjustResize'u ayarlamayı denedim ancak çalışmadı. Ayrıca, ekran boyutunu yeniden hesaplayarak sayfayı el ile yeniden boyutlandırmayı denedim, ancak farklı aygıtlarda tam bir hesaplama için klavye boyutunu elde etmek için bir çözüm bulamadım.

Daha önce aynı problemi olan var mı? Desteklenen tüm platformlar için resmi bir Xamarin.Forms çözümü var mı?

Bu benim defa sohbet düzenidir: önceden

<ContentPage.Content> 
<StackLayout Padding="0"> 
    <ScrollView> 
    <ListView HasUnevenRows="true" x:Name="lvChat" > 
     <ListView.ItemTemplate> 
     <DataTemplate> 
      <ViewCell> 
      <StackLayout Orientation="Vertical" VerticalOptions="Fill" HorizontalOptions="Fill" Padding="5"> 


       <Label Text="{Binding Author, StringFormat='{0}: '}" TextColor="Navy" FontSize="14" /> 
       <Label Text="{Binding Text}" TextColor="Black" FontSize="15" /> 
       <Label Text="{Binding Time}" TextColor="Black" FontSize="14" /> 
       <!-- Format for time.. , StringFormat='{0:HH:mm}' --> 

      </StackLayout> 
      </ViewCell> 
     </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
    </ScrollView> 


    <StackLayout Orientation="Horizontal" Padding="0" Margin="5, 5, 5, 5"> 
    <Entry Keyboard="Chat" x:Name="tbxChatInput" HorizontalOptions="FillAndExpand" Placeholder="Send a Message..." /> 
    <Button x:Name="btnSendMsg" HorizontalOptions="End" Text="Send" Margin="5"/> 

    </StackLayout> 
</StackLayout> 

teşekkürler!

cevap

0

örneğin Android Manifest'te windowSoftInputMode ayar Dene: Girilecek vurduğunuzda

<application ... > 
    <activity 
     android:windowSoftInputMode="adjustResize" ... > 
     ... 
    </activity> 
    ... 
</application> 
1

Merhaba bu klavye ördü, bu şekilde girişinizi içeren stacklayout koymayı deneyin ve Scrollview içerisinde bulunan düğmeye göndermek girişinizi gösterir ve sohbetinizin geri kalanı hem iOS hem de Android'de iyi çalışır. Bunu deneyin:

<ContentPage.Content> 
     <StackLayout Padding="0"> 
      <ScrollView> 

      <StackLayout> 

      <ListView HasUnevenRows="true" x:Name="lvChat" > 
       <ListView.ItemTemplate> 
        <DataTemplate> 
         <ViewCell> 
         <StackLayout Orientation="Vertical" VerticalOptions="Fill" HorizontalOptions="Fill" Padding="5"> 


         <Label Text="{Binding Author, StringFormat='{0}: '}" TextColor="Navy" FontSize="14" /> 
         <Label Text="{Binding Text}" TextColor="Black" FontSize="15" /> 
         <Label Text="{Binding Time}" TextColor="Black" FontSize="14" /> 
        <!-- Format for time.. , StringFormat='{0:HH:mm}' --> 

       </StackLayout> 
       </ViewCell> 
      </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

     <StackLayout Orientation="Horizontal" Padding="0" Margin="5, 5, 5, 5"> 
     <Entry Keyboard="Chat" x:Name="tbxChatInput" HorizontalOptions="FillAndExpand" Placeholder="Send a Message..." /> 
     <Button x:Name="btnSendMsg" HorizontalOptions="End" Text="Send" Margin="5"/> 
     </StackLayout> 

     </StackLayout> 

     </ScrollView> 
    </StackLayout> 
    </ContentPage.Content>