【问题标题】:Position of buttons and designs in XamarinXamarin 中按钮和设计的位置
【发布时间】:2021-07-13 02:43:05
【问题描述】:

场景 1: 我正在尝试使用 Xamarin 创建一个移动应用程序。我希望我的按钮和设计的位置在它的位置。我尝试在我的智能手机上运行它,按钮和设计的位置看起来不错,但是当我尝试在另一部智能手机上运行它时,它们都搞砸了。它改变了它的位置。我在这里使用了stacklayout。

场景 2: 然后有人说他们使用网格。所以,我尝试使用网格来创建我的登录页面。问题是当我单击输入框输入用户名/密码时,当然会弹出键盘,但整个 UI 会更高/高于其原始位置。当我尝试不输入用户名/密码或单击键盘上的后退按钮时,UI 将回到原来的位置。

如何解决这些问题?

【问题讨论】:

    标签: xamarin mobile mobile-application


    【解决方案1】:

    我尝试在我的智能手机上运行它,按钮和设计 位置看起来不错,但是当我尝试在另一部智能手机上运行它时, 他们都搞砸了。它改变了它的位置。

    Xamarin.Forms XAML 支持:

    Xamarin.Forms 使用特定于平台的机制来计算绝对像素尺寸。 Xamarin.Forms 使用 xaml 作为渲染显示的基本标记语言,并在运行时将其转换为本机对应物。通常,您不必关心resolution,它会根据您的布局和约束调整视图。

    一些关于 Xamarin.Forms 多设备支持的有用链接:

    提供一些很好的帮助方法来扩展应用程序以获得更好的平板电脑体验

    Device 类包含许多属性和方法,可帮助开发人员在每个平台上自定义布局和功能。

    讨论支持的设备类型,以及如何优化平板电脑和手机的布局。

    对于场景 2

    问题是当我点击输入框输入一个 用户名/密码,当然会弹出键盘,但整个 UI 将高于/高于其原始位置。当我试图不 输入用户名/密码或单击键盘上的后退按钮, UI 会回到原来的位置。

    我不知道你的应用细节是什么,但是你可以参考下面的代码,没有出现你提到的问题。

    <Grid Margin="20" >
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
    
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Frame HeightRequest="30" BackgroundColor="White" CornerRadius="10" Grid.Row="0" Grid.ColumnSpan="2" />
    
        <Entry Grid.Row="0" Grid.Column="0" MaxLength="30" Placeholder="User Name:" ClearButtonVisibility="WhileEditing"  />
    
        <Image Source="head.png" Scale="0.6" Grid.Row="0" Grid.Column="1"/>
        <Frame HeightRequest="30" BackgroundColor="White" CornerRadius="10" Grid.Row="1" Grid.ColumnSpan="2"/>
    
        <Entry Grid.Row="1" Grid.Column="0" MaxLength="30" Placeholder="Password:" ClearButtonVisibility="WhileEditing" IsPassword="True"/>
        <Image Source="Lock.png" Scale="0.6" Grid.Row="1" Grid.Column="1"/>
    </Grid>
    
    <Button Text="Login"/>
    

    结果是:

    更新

    由于您的控件(例如两个Entry )位于页面底部,当您要输入内容时,键盘会弹出。键盘肯定会占用屏幕上的一些空间。系统会决定如何调整 UI 的可见部分,但可能不会正确。为确保您的应用获得最佳行为,您应该指定您希望系统如何在剩余空间中显示您的 UI。

    Android Developer Site link,我们知道

    “调整大小”

    Activity 的主窗口总是会调整大小,以便为软体腾出空间 屏幕上的键盘。

    “调整盘”

    活动的主窗口未调整大小以为软体腾出空间 键盘。而是自动平移窗口的内容 这样当前的焦点就不会被键盘和用户遮挡 总能看到他们在输入什么。这通常不太理想 而不是调整大小,因为用户可能需要关闭软键盘才能 到达窗口的模糊部分并与之交互。

    在 xamarin 中,您可以更改类 Application WindowSoftInputModeAdjust 的值

    <Application ...
                 xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
                 android:Application.WindowSoftInputModeAdjust="Resize">
      ...
    </Application>
    

    更多详情,您可以查看:

    https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/android/soft-keyboard-input-mode.

    https://developer.android.com/training/keyboard-input/visibility

    【讨论】:

      猜你喜欢
      • 2016-03-10
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      相关资源
      最近更新 更多