首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StackLayout GestureRecognizers效应

StackLayout GestureRecognizers效应
EN

Stack Overflow用户
提问于 2019-06-19 13:33:45
回答 2查看 470关注 0票数 0

我想给StackLayout GestureRecognizers添加一些效果,这样用户就知道他们已经选择了按钮,但我看不出有什么方法可以做到这一点?我试图将BackgroundColor更改为StackLayout,但这是行不通的。

我是否可以更改BackgroundColor,或者是否可以使用长时间保持事件?

xaml码

代码语言:javascript
复制
  <StackLayout VerticalOptions="Center"
                                    x:Name="slpatient"
                                    Grid.Row="4"
                                    BackgroundColor="#8cb8e1"
                                    Orientation="Horizontal">
                            <StackLayout.GestureRecognizers>
                                <TapGestureRecognizer NumberOfTapsRequired="1" Tapped="Button_Clicked" />
                            </StackLayout.GestureRecognizers>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="10"/>
                                    <ColumnDefinition Width="50"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <Image Source="user_34.png" 
                                   Grid.Column="1" 
                                   VerticalOptions="Center" />
                                <Label Text="Click me to change the BackgroundColor!"
                                   Grid.Column="2"
                                   TextColor="White"
                                   LineBreakMode="WordWrap"
                                   VerticalOptions="FillAndExpand"
                                   VerticalTextAlignment="Center"/>
                            </Grid>
                        </StackLayout>

cs码

代码语言:javascript
复制
    private void Button_Clicked_Clicked(object sender, System.EventArgs e)
            {
               slpatient.BackgroundColor = Color.Black;
var masterDetailPage = Application.Current.MainPage as MasterDetailPage;
            masterDetailPage.Detail = new NavigationPage((new SearchPage("DrugName")));
            }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-19 18:50:55

更改颜色功能可能发生在非UI线程上。因此,您可以将它封装在Device.BeginInvokeOnMainThread中,以便在UI线程中调用它,如下所示:

代码语言:javascript
复制
Device.BeginInvokeOnMainThread(() =>
{
     slpatient.BackgroundColor = Color.Black;
});

要回答你的第二个问题,你也可以添加一个计时器:

代码语言:javascript
复制
private void Button_Clicked_Clicked(object sender, System.EventArgs e)
{
     slpatient.BackgroundColor = Color.Black;
     var masterDetailPage = Application.Current.MainPage as MasterDetailPage;
     Device.StartTimer(TimeSpan.FromSeconds(10), () =>
     {
           masterDetailPage.Detail = new NavigationPage((new SearchPage("DrugName")));
           return false; // True = Repeat again, False = Stop the timer
     });
}
票数 1
EN

Stack Overflow用户

发布于 2019-06-20 06:55:18

我试图将BackgroundColor更改为StackLayout,但这是行不通的。

如果您想更改背景色,我建议您可以考虑使用Xameffects,您可以从nuget包中安装xameffect。改变TouchEffect.Color.

代码语言:javascript
复制
<ContentPage
x:Class="App4.Page21"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:xe="clr-namespace:XamEffects;assembly=XamEffects">
<ContentPage.Content>
    <StackLayout
        xe:TouchEffect.Color="Red"
        HorizontalOptions="Center"
        VerticalOptions="Center">
        <Button
            x:Name="btn1"
            Clicked="Btn1_Clicked"
            HorizontalOptions="Center"
            Text="btn1"
            VerticalOptions="Center" />
    </StackLayout>
</ContentPage.Content>

更详细的信息,你可以看看:

https://github.com/mrxten/XamEffects

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56668950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档