0

正如标题所说,将位图加载到 TListViewItems 会导致 ANDROID 应用程序崩溃。适用于 iOS,但不适用于 Android。图片路径是正确的。为简单起见,您可以将 TImage 拖放到表单上,然后手动为其设置一个图像,然后尝试而不是像我一样通过循环,只需设置 LItem.bitmap := TImage1.Bitmap. 是我做错了什么吗?或者有人可以确认这一点,并可能暂时帮助我解决问题。

德尔福 XE7 安卓

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;
4

1 回答 1

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;

链接到完整的项目源和已编译的 apk

于 2014-10-15T17:10:33.023 回答