【问题标题】:adding listview hides form background image Xamarin ios添加listview隐藏表单背景图像Xamarin ios
【发布时间】:2018-03-12 01:27:04
【问题描述】:

我正在开发 Xamarin 跨平台应用程序。 我有表单,我在构造函数上使用表单的BackgroundImage = "timelinebackground.png"; 来设置背景图像。

它可以在良好的 Android 上运行,但是当我在 iOS 中进行检查时,它没有显示背景图像。 当我从 xaml 中删除 listview 时,它的背景图像也会显示在 iOS 中。

这里是 xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="BMTHomesApp.Views.Timeline">
    <ContentPage.ToolbarItems>
        <ToolbarItem Text="Logout" Order="Primary" Priority="0" Clicked="MenuItem_OnClicked"></ToolbarItem>
    </ContentPage.ToolbarItems>
    <StackLayout>
        <ListView
    x:Name="timelineListView"
            ItemTapped="timelineListView_ItemTapped"
    ItemsSource="{Binding .}"
    RowHeight="75"
    SeparatorVisibility="None">


        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Grid ColumnSpacing="0" RowSpacing="0">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="100" />
                            <ColumnDefinition Width="25" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>

                            <Label HorizontalOptions="Center" Text="{Binding ActualStartDate}" TextColor="#0073ae" />

                        <Label Grid.Column="2" Margin="20,0" FontSize="Medium" Text="{Binding StageName}" TextColor="#ffffff"/>

                        <!--<Label
              Grid.Row="1"
              Grid.Column="2"
              Margin="20,0"
              FontSize="Small"
              Text="Please add some desc text in api" TextColor="#ffffff"/>-->

                        <BoxView
                            Grid.RowSpan="2"
                            Grid.Column="1"
                            BackgroundColor="#ffffff"
                            HorizontalOptions="Center"
                            VerticalOptions="Fill"
                            WidthRequest="1" />

                        <Image Grid.Column="1" Source="Bullet.png" HeightRequest="25" WidthRequest="25" />
                    </Grid>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

        <DatePicker x:Name="DatePickerTimeline" IsVisible="False"></DatePicker>
    </StackLayout>
</ContentPage>

和后面的代码:

public partial class Timeline : ContentPage
    {
        public Timeline ()
        {
            InitializeComponent ();
            NavigationPage.SetBackButtonTitle(this, "");
            Title = "TIMELINE";
            BackgroundImage = "timelinebackground.png";


            var constructionStages = GetConstructionStages();
            if (!string.IsNullOrEmpty(constructionStages.Result.Error))
            {
                DisplayAlert("Error", constructionStages.Result.Error, "Ok");
            }
            else
            {
                timelineListView.ItemsSource = constructionStages.Result.ConstructionStages;
            }

        }

        private void timelineListView_ItemTapped(object sender, ItemTappedEventArgs e)
        {
            var selectedItem = (ConstructionStages) e.Item;

            if (!string.IsNullOrEmpty(selectedItem.ActualStartDate))
            {
                DateTime dateTimeStart;
                if (DateTime.TryParse(selectedItem.ActualStartDate, out dateTimeStart))
                {
                    DatePickerTimeline.MinimumDate = dateTimeStart;
                }
            }

            if (!string.IsNullOrEmpty(selectedItem.ActualCompletionDate))
            {
                DateTime dateTimeEnd;
                if (DateTime.TryParse(selectedItem.ActualCompletionDate, out dateTimeEnd))
                {
                    DatePickerTimeline.MaximumDate = dateTimeEnd;
                }
            }

            if (!string.IsNullOrEmpty(selectedItem.ActualStartDate) ||
                !string.IsNullOrEmpty(selectedItem.ActualCompletionDate))
            {
                DatePickerTimeline.Format = "MM-dd-yyyy";
                DatePickerTimeline.BackgroundColor = Color.FromHex("#ffffff");
                //DatePickerTimeline.IsVisible = true;
                DatePickerTimeline.Focus();
            }
            else
            {
                timelineListView.SelectedItem = null;
            }
        }

        private async Task<ConstructionStagesResponse> GetConstructionStages()
        {
            ConstructionStageManager manager = new ConstructionStageManager();
            var result = await manager.GetConstructionStages(Application.Current.Properties["SessionId"].ToString());
            return result;
        }

        private async void MenuItem_OnClicked(object sender, EventArgs e)
        {
            HelperClasses.LogOut();
            Application.Current.MainPage = new NavigationPage(new Login());
            //Navigation.PushAsync(new Login());
        }
    }

【问题讨论】:

    标签: ios xamarin xamarin.forms


    【解决方案1】:

    您需要将您的ListViewBackgroundColor 属性设置为透明,才能显示页面的背景图片:

    <ListView BackgroundColor="Transparent">
    

    【讨论】:

    • 非常感谢,我已经尝试了所有其他的方法,比如一个一个地删除每个控件,并花了几个小时来解释它为什么不适用于 iOS,就像在 Android 上一样。
    • @Mahajan344 iOS UIViews 具有不同的背景默认值,然后 Android 的 Views 和 Forms' 不会覆盖默认值,除非您告诉它。很高兴我能帮忙?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多