Xamarin - 动画StackLayout

时间:2016-03-15 16:02:08

标签: c# animation xamarin xamarin.forms

非常早上好,我在单击StackName的UserName时尝试实现该功能,以便键盘不会隐藏信息。但对于这一点,我不是最好的选择,我在iOS和Android上工作。你能帮帮我吗?

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             x:Class="BackGround.BackGroundImageDemo" BackgroundImage="Avion.jpg">
    <ContentPage.Content >
     <StackLayout VerticalOptions="Center" Padding="5, 50, 120, 0" BackgroundColor="White" HorizontalOptions="Center">
        <Entry Placeholder="UserName" PlaceholderColor="Gray" TextColor="Navy"  />
        <Entry Placeholder="Password" IsPassword="true"  PlaceholderColor="Gray" TextColor="Navy"/>
     </StackLayout>

    </ContentPage.Content>
</ContentPage>

Chase应用程序有类似的东西。

Chase UserName normal - Chase in mode up stacklayout

3 个答案:

答案 0 :(得分:0)

这可以使用scrollview来实现。这是简单的代码段。

<ContentPage.Content>
    <ScrollView x:Name="scr">

    Your Stack Layout having entry and click button
    Add TapGestureRecognizer to entry control in this case it is username or password whichever you want.
    How to add TapGestureRecognizer. You can look at here.

   </ScrollView>
</ContentPage.Content>

然后在你的代码背后

field.GestureRecognizers.Add(new TapGestureRecognizer
{
    Command = new Command(async () => 
    { 
            await ScollTest();
    }),
    NumberOfTapsRequired = 1,
});

private async void ScollTest()
{
  // Then adjust your scroll this way.
  await scr.ScrollToAsync(100, 1000, true);
}

答案 1 :(得分:-1)

对于我从您的问题中理解的内容,您需要一种方法来确保当键盘弹出时,它不会覆盖屏幕中的条目和/或其他相关信息,对吧?

方法是将您的内容放在ScrollView内,这样用户就可以在必要时滚动它。此外,Android和iOS都会自动将屏幕滚动到可见的条目。

我将您的示例更改为:

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             x:Class="BackGround.BackGroundImageDemo" BackgroundImage="Avion.jpg">
    <ScrollView>
        <StackLayout VerticalOptions="Center" Padding="5, 50, 120, 0" BackgroundColor="White" HorizontalOptions="Center">
            <Entry Placeholder="UserName" PlaceholderColor="Gray" TextColor="Navy"  />
            <Entry Placeholder="Password" IsPassword="true"  PlaceholderColor="Gray" TextColor="Navy"/>
        </StackLayout>
    </ScrollView>
</ContentPage>

答案 2 :(得分:-1)

通常不会在Xamarin.Forms中为项目设置动画。查看BikeShare360 app on Github

这是一款精美的应用程序,它使用第三方动画库和自定义Storyboard XAML来提供出色的用户体验。

例如,淡化控件中的任意元素。

定义您想要做的事情:

data.Total

您想要触发动画的是什么事件:

<animations:StoryBoard 
                x:Key="ProfileImageAnimation"    
                Target="{x:Reference ProfileImage}">
                <animations:FadeInAnimation 
                   Direction="Up"
                    Duration="500" />
</animations:StoryBoard>

您要影响的元素:

<ContentPage.Triggers>
        <EventTrigger Event="Appearing">
            <triggers:BeginAnimation   
                Animation="{StaticResource ProfileImageAnimation}" />
        </EventTrigger>
</ContentPage.Triggers>

所有来源都可用,开始并不难。

祝你好运!