Xamarin.Forms - заставляет ActivityIndicator исчезать при загрузке видео - PullRequest
0 голосов
/ 26 апреля 2018

В Xamarin.Forms у меня есть ActivityIndicator и label, которые появляются при загрузке видео.Как правильно отключить его, когда видео полностью загружено?

Ниже мой xaml (Обновлено 4/26) :

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:PreAppStructure"
         xmlns:roxv="clr-namespace:Rox;assembly=Rox.Xamarin.Video.Portable"
         x:Class="PreAppStructure.Page3"
         Title="Welcome to page 3">
<ContentPage.Content>
    <Grid>

        <roxv:VideoView x:Name="VideoView" AutoPlay="True" LoopPlay="True" ShowController="True" Source="http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4" />

        <StackLayout BackgroundColor="Black" HorizontalOptions="Center" VerticalOptions="Center" IsVisible="True">

            <ActivityIndicator Color="White"
                x:Name="loader"
                IsRunning="{Binding IsBusy}" 
            VerticalOptions="Center" HorizontalOptions="Center"

               />
            <Label x:Name ="loadingtext" Text="Loading...Please wait!" HorizontalOptions="Center" TextColor="White" IsVisible="{Binding IsBusy}"/>

        </StackLayout>

    </Grid>


</ContentPage.Content>

Ниже приведен мой класс C # и одна из моих нескольких попыток:

...
public partial class Page3 : ContentPage
{
    public Page3 ()
    {

        InitializeComponent ();

        this.BindingContext = this;

        this.IsBusy = true;


        NavigationPage.SetBackButtonTitle(this, "Back");

    }

    async void OnDoSomethingLong()
    {
        if (!this.IsBusy)
        {
            try
            {
                this.IsBusy = true;

                //await long operation here

            }
            finally
            {
                this.IsBusy = false;

                await Task.Run(() => {

                    return VideoView;

                });
            }
        }
    }

1 Ответ

0 голосов
/ 27 апреля 2018

Вы должны использовать свойство IsVisible для, чтобы скрыть или увидеть индикатор активности.

-IsRunning свойство используется для вращения индикатора активности, но оно не применимо, чтобы скрыть или увидеть индикатор активности

  • Свойство IsVisible, используемое для скрытия или видимости индикатора активности, оно не будет беспокоить, вращается он или нет, оно просто делает видимым и невидимым.

, в вашем случае используйте оба IsVisibleсвойство и свойство IsRunning, когда IsBusy является истинным, индикатор активности виден, и он будет вращаться, если он ложен, он не будет виден и вращаться.

Удалите stackLayout и добавьте индикатор активности в дочерний элемент Grid.

 <ActivityIndicator Color="White" x:Name="loader" 
 IsRunning="{Binding IsBusy}"
 IsVisible="{Binding IsBusy}"
 VerticalOptions="Center" HorizontalOptions="Center" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...