正如标题所说,将位图加载到TListViewItems会导致ANDROID应用程序崩溃。适用于iOS,但不适用于Android。图片路径是正确的。为了简单起见,您可以将TImage放到表单上,然后手动设置一个图像,然后尝试而不是像我一样经历循环,只需设置
LItem.bitmap := TImage1.Bitmap
。这是我做错了吗?或者有人可以证实这一点,并可能帮助我解决现在的问题。
Delphi XE7 Android
if MenuList.Items.Count=0 then // load menu options + icons
begin
for i := 0 to Length(PicturePaths)-1 do
begin
LItem:=MenuList.Items.Add;
LItem.Text := PictureNames[i];
LItem.Bitmap.LoadFromFile(TPath.GetHomePath+PathDelim+PicturePaths[i]);
end;
end;
答案 0 :(得分:1)
<强>更新强>
如果TListView.ItemAppearance.Item.Appearance
未设置为以ImageListItem
开头的选项之一,则会发生这种情况。在这种情况下,未分配Bitmap属性。
从XE7开始,可以为不同设备的控件设置不同的设置。因此,可以设置ImageListItem
和任何其他设备ListItem
,您将获得例外。
示例项目中使用的代码:
procedure TForm1.SpeedButton1Click( Sender: TObject );
var
LItem: TListViewItem;
LImageFilename: string;
begin
LItem := ListView1.Items.Add;
LImageFilename := TPath.Combine( TPath.GetHomePath, 'sample.png' );
LItem.Text := LImageFilename;
// just be sure that the file exists and the bitmap is assigned
if TFile.Exists( LImageFilename ) and Assigned( LItem.Bitmap )
then
LItem.Bitmap.LoadFromFile( LImageFilename );
end;