Как правильно использовать свойство Image Source с помощью Xamarin.Forms?
У меня возникают трудности с отображением изображения на странице содержимого в макете стека. Я просмотрел документацию по API Xamarin и нашел Xamarin.Forms.Image.Source Property, но не содержит пример кода, чтобы увидеть, как он написан. Я также проверил, как это было написано на С# и, похоже, соответствует моему коду с точки зрения пути к имени файла, но в Xamarin это может немного отличаться, поскольку в первый раз это делается. Код, который я сейчас тестировал с помощью эмулятора Android (Google Nexus 5) в Visual Studio 2013, отлично работает, за исключением изображения, которое не отображается.
Источник изображения:
new Image
{
VerticalOptions = LayoutOptions.Center,
HorizontalOptions = LayoutOptions.Center,
Source = "/Assets/xamarin_logo.png",
},
Полный код:
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
Вы не должны ссылаться на путь, потому что свойство source является кросс-платформенным, и поскольку каждая платформа имеет другую папку для таких активов, как изображения, вам нужно указать имя файла и расширение. Класс изображения знает, где искать файл.
Файлы изображений могут добавляться в каждый проект приложения и ссылаться на общий код Xamarin.Forms. Чтобы использовать одно изображение во всех приложениях, одно и то же имя файла должно использоваться на каждой платформе, и оно должно быть допустимым именем ресурса Android (что означает отсутствие пробелов и специальных символов). Поместите изображения в каталог Ресурсы/чертеж с помощью функции сборки: AndroidResource. Также могут быть предоставлены версии изображения с высоким и низким разрешением (в подзаголовках Resource, таких как drawable-ldpi, drawable-hdpi и drawable-xhdpi).
![введите описание изображения здесь]()
var beachImage = new Image { Aspect = Aspect.AspectFit };
beachImage.Source = ImageSource.FromFile("waterfront.jpg");
Источник: https://developer.xamarin.com/guides/xamarin-forms/working-with/images/#Local_Images
Ответ 2
Если вы хотите добавить изображения с помощью кода,
попробуйте это
Скачан автоматически и отображает изображение
var webImage = new Image { Aspect = Aspect.AspectFit };
webImage.Source = ImageSource.FromUri(new Uri("https://xamarin.com/content/images/pages/forms/example-app.png"));
Ответ 3
Добавьте изображение в Обозреватель решений, щелкнув папку Ресурсы/Жесткая и выберите Новый/Существующий элемент. Пожалуйста, не копируйте изображение в папку Ресурсы/Драйвер. Надеюсь, что это поможет.