2015-06-15 10 views
13

Mam trudności z wyświetlaniem obrazu na stronie zawartości w układzie stosu. Przejrzałem dokumentację API Xamarin i znalazłem Xamarin.Forms.Image.Source Property, ale bez przykładowego kodu, aby zobaczyć, jak jest napisana. Sprawdziłem również, aby zobaczyć, jak został napisany w języku C# i wydaje się pasować do mojego kodu pod względem ścieżki do nazwy pliku, ale w Xamarin może być nieco inny, ponieważ po raz pierwszy to robi. Kod, który testuję obecnie przez emulator Androida (Google Nexus 5) w Visual Studio 2013, który działa dobrze, z wyjątkiem obrazu, który nie jest wyświetlany.Jak poprawnie używać właściwości Image Source w Xamarin.Forms?

Image Source:

new Image 
{ 
    VerticalOptions = LayoutOptions.Center, 
    HorizontalOptions = LayoutOptions.Center, 
    Source = "/Assets/xamarin_logo.png", 
}, 

Pełny Kod:

public NFCPage() 
    { 
     StackLayout stackLayout = new StackLayout // instantiate a StackLayout object to layout its children 
     { 
      Spacing = 5, // amount of spae between each child element 
      //HorizontalOptions = LayoutOptions.Center, 
      VerticalOptions = LayoutOptions.FillAndExpand, // defines how the elements should be laid out; fill the entire width of the content to the screen 
      BackgroundColor = Color.Blue, 

      Children = // gets a list of child elements 
      { 
       new Label 
       { 
        TextColor = Color.White, 
        BackgroundColor = Color.Red, 
        XAlign = TextAlignment.Center, // set text alignment horizontally 
        Text = "Google", 
       }, 
       new Label 
       { 
        Text = "Place your device directly at the symbol.", 
        XAlign = TextAlignment.Center, 
        TextColor = Color.White, 
       }, 
       new Image 
       { 
        VerticalOptions = LayoutOptions.Center, 
        HorizontalOptions = LayoutOptions.Center, 
        Source = "/Assets/xamarin_logo.png", 
       }, 
       new Button 
       { 
        Text = "QR Code", 
        TextColor = Color.White, 
       }, 
       new Button 
       { 
        Text = "?", 
        TextColor = Color.White, 
       }, 
      } 
     }; 
     Content = stackLayout; // apply stackLayout to Content 
    } 
+1

masz przeczytać ten dokument - http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/images /? Zasadniczo na urządzeniach z systemem Android dodajesz obrazy jako zasoby do rysowania, a następnie podajesz tylko nazwę obrazu, a formularze znajdują odpowiednie zdjęcia w zasobach. – Jason

+0

Dzięki za informację. Mam jeszcze jedno pytanie, gdzie mogę określić umieszczenie obrazu na stronie z tym kodem? Var NfcImage = new Image {Aspect = Aspect.AspectFit}; NfcImage.Source = ImageSource.FromFile ("xamarin_logo.png"); '? Nie działa, jeśli umieściłem go w konstruktorze 'new Image {}' – TheAmazingKnight

+0

Zorientowałem się, poszedłem do tego o nazwie "Local Images" i dostosowałem nazwę ścieżki pliku do 'Source =" xamarin_logo.png "' i to pracował. Jeszcze raz dziękuję za link. To naprawdę pomogło. – TheAmazingKnight

Odpowiedz

19

Nie należy odwoływać się do ścieżki, ponieważ nieruchomość źródłem jest cross-platform, a ponieważ każdy ma inną platformę folder dla zasobów takich jak obrazy, wystarczy podać nazwę pliku i rozszerzenie. Klasa Image wie, gdzie szukać pliku.

Pliki obrazów można dodawać do każdego projektu aplikacji i odwoływać się do udostępnionego kodu Xamarin.Forms. Aby użyć pojedynczego obrazu we wszystkich aplikacjach, ta sama nazwa pliku musi być używana na każdej platformie i powinna to być poprawna nazwa zasobu Androida (co oznacza brak spacji i znaków specjalnych). Umieść obrazy w katalogu Resources/drawable za pomocą Build Action: AndroidResource. Wersje obrazu w wysokiej i niskiej rozdzielczości mogą być również dostarczane (w odpowiednio nazwanych podkatalogach Zasoby, takich jak drawable-ldpi, drawable-hdpi i drawable-xhdpi).

enter image description here

var beachImage = new Image { Aspect = Aspect.AspectFit }; 
beachImage.Source = ImageSource.FromFile("waterfront.jpg"); 

Źródło:https://developer.xamarin.com/guides/xamarin-forms/working-with/images/#Local_Images

+1

W projekcie UWP przechowywanie wszystkich obrazów w folderze głównym nie jest najlepszym rozwiązaniem, czy masz jakieś inne rozwiązanie, w którym można przechowywać obrazy w podkatalogu. Proszę odnieść się do pytania tutaj. http://stackoverflow.com/questions/37939758/xamarin-cross-platform-uwp-images-are-missing – Ashaar

2

Dodaj obraz w oknie Solution Explorer, klikając Resources/folder rozciągliwej i wybierz Nowy/Istniejące Zadawalam nie skopiować obraz do zasobów/rozciągliwej teczka. Mam nadzieję, że to pomoże.

4

Jeśli są chętni, aby dodać obrazy za pomocą kodu, spróbować

pobierane automatycznie i wyświetla obraz

 var webImage = new Image { Aspect = Aspect.AspectFit }; 
     webImage.Source = ImageSource.FromUri(new Uri("https://xamarin.com/content/images/pages/forms/example-app.png")); 
Powiązane problemy