繁体   English   中英

Xamarin Forms Android键盘向上移动整个页面

[英]Xamarin Forms Android Keyboard moves whole Page upwards

我正在尝试编写一个Xamarin.Forms聊天应用程序。 问题是:在Android上,一旦键盘显示整个页面(包括ActionBar)向上移动。 我可以通过使用调整页面大小的NuGet包来修复IOS上的问题。

我已经尝试在Android项目的MainActivity.cs中设置WindowSoftInputMode = Android.Views.SoftInput.AdjustResize ,但它不起作用。 我还尝试通过重新计算屏幕大小来手动调整页面大小,但我还没有找到解决方案来获取键盘大小以便在不同设备上进行精确计算。

以前有人遇到过同样的问题吗? 是否有适用于所有受支持平台的官方Xamarin.Forms解决方案?

这是我到目前为止的聊天布局:

<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>

提前致谢!

嗨,尝试将包含输入的stacklayout和发送按钮放在scrollview中,这样当你点击输入时它会向上推动键盘显示你的输入,其余的聊天在iOS和Android上都能正常工作。 试试这个:

 <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>

尝试在Android Manifest中设置windowSoftInputMode ,例如:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM