c# - Xamarin Android 的列表视图中未加载嵌入式资源
问题描述
[更新]
因此,通过使用提供的依赖注入器,我找到了一种非常简单的方法来解决这个问题,它是从 Android 中的资产加载东西。我将不得不寻找如何在 iOS 中做到这一点,但现在这不是一个大问题。
然而,更令人担忧的是,单个单元格没有按应有的方式显示。
XAML 的修订(和相关)位如下:
<ViewCell>
<StackLayout Orientation="Vertical">
<Label Text="{Binding Name}" FontAttributes="Bold" FontSize="Large" HorizontalOptions="StartAndExpand" VerticalOptions="Start"></Label>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Email}" HorizontalOptions="Fill" VerticalOptions="Start"></Label>
<Image Source="{Binding image.Source}" HorizontalOptions="EndAndExpand"></Image>
</StackLayout>
</StackLayout>
</ViewCell>
因此,当前显示如下:
-> 第 1 行 = 完美
-> 第 2 行:电子邮件=完美,图像 = 仅可见一小部分
我怀疑这与布局有关,但我不知道为什么要这样做。
建议,请!
[旧帖子]
我有一个 XAML 文件,它可以在 Android 预览窗格中正确显示,但图像元素除外。这是我正在使用的 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"
xmlns:local="clr-namespace:App3"
x:Class="App3.MainPage">
<StackLayout>
<!-- Place new controls here -->
<Label Text="WPF test for POD"
HorizontalOptions="Center"
VerticalOptions="Center" />
<Entry Placeholder="Email address" Keyboard="Email"></Entry>
<Entry Placeholder="Password" IsPassword="True" Text="WobblyDobbly"></Entry>
<Button x:Name="BtnSignIn" Text="Sign In" HorizontalOptions="FillAndExpand" Clicked="BtnSignIn_Clicked">
</Button>
<StackLayout x:Name="slUserInfo" HorizontalOptions="FillAndExpand">
<Entry Placeholder="Name" x:Name="txtName" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"></Entry>
<Entry Placeholder="Email" x:Name="txtEmail" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Keyboard="Email"></Entry>
<Button Text="Add to list" x:Name="btnAddToList" Clicked="btnAddToList_Clicked" HorizontalOptions="StartAndExpand"></Button>
</StackLayout>
<ListView x:Name="lvItems" VerticalOptions="Start" HorizontalOptions="StartAndExpand">
<ListView.ItemTemplate>
<DataTemplate>
<!--
<TextCell Text="{Binding Name}" Detail="{Binding Email}">
</TextCell>
-->
<ViewCell>
<StackLayout Orientation="Vertical">
<Label Text="{Binding Name}" HorizontalOptions="FillAndExpand" FontAttributes="Bold"></Label>
<Label Text="{Binding Email}" HorizontalOptions="StartAndExpand"></Label>
<Image Source="{Binding image.Source}" HorizontalOptions="End"> </Image>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button x:Name="btnAddItem" Text="Add..." HorizontalOptions="Start" Clicked="btnAddItem_Clicked">
</Button>
</StackLayout>
</ContentPage>
在后端,我有这些类:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using Xamarin.Forms;
namespace App3
{
class Item
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public Image image { get; set; }
public Item( int AnId, string AName, string AnEmail)
{
Id = AnId;
Name = AName;
Email = AnEmail;
}
}
class ItemList : ObservableCollection<Item>
{
public void Add(string Name, string Email,string AssignedImage, int Id = 0)
{
int ActualID = Id;
Item item = new Item(Id, Name, Email);
if (ActualID == 0)
{
ActualID = NextId();
}
item.image = new Image();
item.image.Source = ImageSource.FromResource(AssignedImage);
Add(item);
}
public int NextId()
{
int CurrentCount = Count;
return ++CurrentCount;
}
}
}
使用 UWP 项目时,一切正常。但是,当我在 Android 上运行它时 - 就像在预览中一样 - 它不会显示图像。
我的 MainPage.xaml.cs 看起来像这样:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace App3
{
public partial class MainPage : ContentPage
{
private ItemList model = new ItemList();
public MainPage()
{
InitializeComponent();
lvItems.ItemsSource = model;
model.Add("Andrea", "email@email.com", "App3.arrow_left.png");
slUserInfo.IsVisible = false;
}
private void BtnSignIn_Clicked(object sender, EventArgs e)
{
}
private void btnAddItem_Clicked(object sender, EventArgs e)
{
slUserInfo.IsVisible = true;
}
private void btnAddToList_Clicked(object sender, EventArgs e)
{
model.Add(txtName.Text, txtEmail.Text,"App3.arrow_left.png");
txtName.Text = "";
txtEmail.Text = "";
}
}
}
该图像标记为 EmbeddedResource,位于 common 项目下的 /Resources 中。
当我将它作为 UWP 运行时,图像正确显示。当我将它作为 Android 应用程序运行时,图像根本不显示。Android 应用程序中没有特殊代码。我确定我做错了什么,你能指出我正确的方向吗?
PS 这是我第一个全天致力于 Xamarin,所以请不要回避基本问题,因为它很可能是我忽略的一些简单问题。
解决方案
推荐阅读
- python - len(str(3.154155151000)) 的答案怎么可能是“11”?
- installation - SoapUI 5.6.0 无法在 Ubuntu 20.04 LTS 上安装
- c++ - 没有活动项目的 KDevelop 和 Cppcheck
- sql - 在 SQL 中查找重叠事件并保留更长的时间
- python - python selenium 按类获取按钮并单击
- ios - --ion-safe-area-top 在 iOS 上无法正常工作
- node.js - 什么是 har-validator,我该如何解决这个问题
- go - 没有收到来自远程调用的错误,一直到超时 Go gRPC + micro + protobuf
- x509certificate - 使用 Vault 设置 Spinnaker 证书配置 (x.509)
- json - 如何从 JSON 响应中提取对象属性