为什么活动指标不显示?
问题描述:
这是我的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>
答
一个相对布局将会把你的控件,相对于它的兄弟姐妹,所以它很可能会在你的指示,或略低于它的顶部和淡出人们的视线渲染栈布局。这记录在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>
答
我在我的项目已经做了
在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
的值以显示ActivityIndicator。
private void doStuffs()
{
IsLoading = true;
IsBusy = true;
//Do any stuffs
IsLoading = false;
IsBusy = false;
}
想这仍然是其不可见 –
在这种情况下,我会看看对方的回答,作为一个默认的活动指示灯未设置为“运行”,所以它可能是值得设置这些方法和再试一次。 – Digitalsa1nt
我不认为这段代码会按照公布的方式工作。内容只能有一个孩子,在代码中我看到2 - Indicator和ScrollView。我看到这被接受了。你解决了吗? –