2017-06-13 111 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; 
}