2017-06-13 97 views
0

这是我的XAML代码试图将ActivityIndicator放在其他视图之上,但它没有显示为什么?为什么活动指标不显示?

<?xml version="1.0" encoding="UTF-8"?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" BackgroundImage="background_nonedit.png" Title="Citizen Reporter" x:Class="BBSTV.CitizenReporter"> 
    <ScrollView> 
     <RelativeLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"> 
      <StackLayout VerticalOptions="Center" HorizontalOptions="Fill" Padding="10" RelativeLayout.XConstraint="{ConstraintExpression Type=Constant, Constant=0}" RelativeLayout.YConstraint="{ConstraintExpression Type=Constant, Constant=0}"> 
       <Grid x:Name="SegmentGrid" RowSpacing="10" ColumnSpacing="10"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="*" /> 
        </Grid.ColumnDefinitions> 
       </Grid> 
       <Image x:Name="citizenImage" WidthRequest="400" HeightRequest="220" /> 
       <Label VerticalOptions="Center" HorizontalOptions="Center" Margin="8" x:Name="attachment_label" /> 
       <Entry Placeholder="News Title" Margin="8" VerticalOptions="Center" HeightRequest="40" /> 
       <Entry Placeholder="News Details" Margin="8" VerticalOptions="Center" HeightRequest="90" /> 
       <Button Text="CHOOSE PHOTO" Margin="8" Clicked="onChoosePhoto" TextColor="White" BackgroundColor="#4D7EE1" /> 
       <Button Text="TAKE PHOTO" Margin="8" Clicked="onTakePhoto" TextColor="White" BackgroundColor="#4D7EE1" /> 
       <Button Text="CHOOSE VIDEO" Margin="8" Clicked="onChooseVideo" TextColor="White" BackgroundColor="#4D7EE1" /> 
       <Button Text="TAKE VIDEO" Margin="8" Clicked="onTakeVideo" TextColor="White" BackgroundColor="#4D7EE1" /> 
       <Button Text="UPLOAD REPORT" Margin="9" Clicked="UploadFile_Clicked" TextColor="White" BackgroundColor="#F399FC " /> 
      </StackLayout> 

      <ActivityIndicator x:Name="activity_i_citizenReport" Color="Black" 
       VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand" 
       /> 
     </RelativeLayout> 
    </ScrollView> 
</ContentPage> 

回答

1

一个相对布局将会把你的控件,相对于它的兄弟姐妹,所以它很可能会在你的指示,或略低于它的顶部和淡出人们的视线渲染栈布局。这记录在here

我只是简单地将它放在滚动视图的外部,因为滚动视图具有可变内容大小,所以计算死点有时会有点困难,而如果将活动控件分配给内容页面直接它将永远在中心。如果下面的操作不起作用,你可能不得不使用Z-Index。

<?xml version="1.0" encoding="UTF-8"?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" BackgroundImage="background_nonedit.png" Title="Citizen Reporter" x:Class="BBSTV.CitizenReporter"> 
<ContentPage.Content> 

    <ActivityIndicator x:Name="activity_i_citizenReport" Color="Black" 
       VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand"/> 

    <ScrollView> 
     <RelativeLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"> 
      <StackLayout VerticalOptions="Center" HorizontalOptions="Fill" Padding="10" RelativeLayout.XConstraint="{ConstraintExpression Type=Constant, Constant=0}" RelativeLayout.YConstraint="{ConstraintExpression Type=Constant, Constant=0}"> 
       <Grid x:Name="SegmentGrid" RowSpacing="10" ColumnSpacing="10"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="*" /> 
        </Grid.ColumnDefinitions> 
       </Grid> 
       <Image x:Name="citizenImage" WidthRequest="400" HeightRequest="220" /> 
       <Label VerticalOptions="Center" HorizontalOptions="Center" Margin="8" x:Name="attachment_label" /> 
       <Entry Placeholder="News Title" Margin="8" VerticalOptions="Center" HeightRequest="40" /> 
       <Entry Placeholder="News Details" Margin="8" VerticalOptions="Center" HeightRequest="90" /> 
       <Button Text="CHOOSE PHOTO" Margin="8" Clicked="onChoosePhoto" TextColor="White" BackgroundColor="#4D7EE1" /> 
       <Button Text="TAKE PHOTO" Margin="8" Clicked="onTakePhoto" TextColor="White" BackgroundColor="#4D7EE1" /> 
       <Button Text="CHOOSE VIDEO" Margin="8" Clicked="onChooseVideo" TextColor="White" BackgroundColor="#4D7EE1" /> 
       <Button Text="TAKE VIDEO" Margin="8" Clicked="onTakeVideo" TextColor="White" BackgroundColor="#4D7EE1" /> 
       <Button Text="UPLOAD REPORT" Margin="9" Clicked="UploadFile_Clicked" TextColor="White" BackgroundColor="#F399FC " /> 
      </StackLayout> 
     </RelativeLayout> 
     </ScrollView> 
    </ContentPage.Content> 
</ContentPage> 
+0

想这仍然是其不可见 –

+0

在这种情况下,我会看看对方的回答,作为一个默认的活动指示灯未设置为“运行”,所以它可能是值得设置这些方法和再试一次。 – Digitalsa1nt

+0

我不认为这段代码会按照公布的方式工作。内容只能有一个孩子,在代码中我看到2 - Indicator和ScrollView。我看到这被接受了。你解决了吗? –

2

ActivityIndicator有一些属性。

ISVISIBLE

IsRunning

的IsEnabled

尝试设置这些属性为 “true”

0

我在我的项目已经做了

Xaml我已经使用作为我的父母的Grid 0。

<Grid HorizontalOptions="FillAndExpand"> 
    <ScrollView HorizontalOptions="FillAndExpand"> 
    <!----Views-----> 
    </ScrollView> 
     <Frame Padding="50,30,50,30" HasShadow="true" BackgroundColor="#80000000" Grid.Row="0" Grid.Column="0" IsVisible="{Binding IsLoading}" VerticalOptions="Center" HorizontalOptions="Center"> 
      <ActivityIndicator Color="White" VerticalOptions="Center" HorizontalOptions="Center" x:Name="actInd" IsRunning="{Binding IsLoading}" IsVisible="{Binding IsLoading}" /> 
     </Frame> 
</Grid> 

在您的Page中执行INotifyPropertyChanged。 内部构造,设置

BindingContext = this;

之后,创建在你的页面PropertyChangedEventHandler与我们的自定义属性。

private bool isLoading; 
    public bool IsLoading 
    { 
     get 
     { 
      return isLoading; 
     } 

     set 
     { 
      isLoading = value; 
      RaisePropertyChanged("IsLoading"); 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    public void RaisePropertyChanged(string propName) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propName)); 

     } 
    } 

现在我们只需要更改IsLoading的值以显示ActivityIndi​​cator。

private void doStuffs() 
{ 
    IsLoading = true; 
    IsBusy = true; 
    //Do any stuffs 
    IsLoading = false; 
    IsBusy = false; 
}