Равиль Зарипов (ZuBy)

пару вопросов по работе ActionSheet

12 сообщений в этой теме

Пока писал вопросы, один решил

 

1) Создание динамически элементов получилось так:

var
  fgItem: TfgActionCollectionItem; // uses FGX.ActionSheet.Types
begin
  fgItem := fgActions.Actions.Add as TfgActionCollectionItem;
  fgItem.Caption := 'Контакты';
  fgItem.OnClick := OnClickProc;
end;

2) Как можно поменять шрифт? (я использую FontAwesome)

post-59-0-39224100-1452180612_thumb.png

 

3) Как отловить закрытие?

 

P.S. В качестве идеи/бреда, для десктопов можно было использовать TPopupMenu как основу

Изменено пользователем ZuBy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  1. В следующей версии я как раз планировал добавить событие OnClose и OnShow
  2. Подумаю на счет Windows и OSX реализации
  3. В текущей реализации, только при помощи правок исходников. Обсуждение тут
Равиль Зарипов (ZuBy) понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  1. В следующей версии я как раз планировал добавить событие OnClose и OnShow
  2. Подумаю на счет Windows и OSX реализации
  3. В текущей реализации, только при помощи правок исходников. Обсуждение тут

долго ли ждать следующую версию?

на счёт шрифта, спасибо. завтра попробую

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  1. В следующей версии я как раз планировал добавить событие OnClose и OnShow

Ярослав, прошу попутно зацепить ImageList...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дело в том, что в iOS и в андроиде в стандартном варианте нету картинок. Но вообще мне кажется, что для андроида ActionSheet должен быть в виде попапа... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

  1. В следующей версии я как раз планировал добавить событие OnClose и OnShow

Ярослав, прошу попутно зацепить ImageList...

 

Как сказали уже картинки нельзя прикрутить, нативно они не поддерживаются.

Поэтому хочу использовать шрифт FontAwesome только нужно допилить немного, чтобы шрифт грузился

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Помогите добрым советом

 

Вот что получается

unit FGX.ActionSheet.Android;

дописываем метод Show

procedure TAndroidActionSheetService.Show(const ATitle: string; Actions: TfgActionsCollections;
  const UseUIGuidline: Boolean = True);
var
  DialogBuilder: JAlertDialog_Builder;
  dialog: JAlertDialog;
  Items: TJavaObjectArray<JCharSequence>;

  // ................
  TextView: JTextView; // uses Androidapi.JNI.Widget
  Typeface: JTypeface;
  FontFile: string;
  // ................
begin
  AssertIsNotNil(Actions);

  FActions := Actions;

  { Create Alert Dialog }
  if TOSVersion.Major <= 2 then
    DialogBuilder := TJAlertDialog_Builder.JavaClass.init(TAndroidHelper.Context)
  else
    DialogBuilder := TJAlertDialog_Builder.JavaClass.init(TAndroidHelper.Context, GetNativeTheme);

  // ................
  { Пытаемся загрузить шрифт }
  FontFile := TPath.Combine(TPath.GetDocumentsPath, 'FontAwesome.ttf');
  if FileExists(FontFile) then // выдает, что найден
  begin
    Typeface := TJTypeface.JavaClass.createFromFile(StringToJString(FontFile)); // пытаемся загрузить шрифт
    TextView := TJTextView.JavaClass.init(TAndroidHelper.Context); // создаем TextView
    TextView.setText(StrToJCharSequence(' ' + widechar($F085) + ' options')); // выводим посмотреть что получилось
    TextView.setTypeface(Typeface); // эту строчку забыл добавить!!!
    DialogBuilder.setView(TextView); // присваиваем нашему диалогу TextView
  end;
  // ................

  { Forming  Action List }
  Items := ItemsToJavaArray;
  if not ATitle.IsEmpty then
    DialogBuilder.setTitle(StrToJCharSequence(ATitle));
  DialogBuilder.setItems(Items, FListener);
  DialogBuilder.setCancelable(True);

  CallInUIThread(
    procedure
    begin
      dialog := DialogBuilder.Create;
      dialog.Show;
    end);
end;

в итоге получается вот такое

post-59-0-95853800-1452333007_thumb.png

 

UPDATE: получилось присвоить TextView шрифт, забыл присвоить Typeface

post-59-0-63096000-1452336108_thumb.png

 

Что я делаю не так?

Как теперь добавленным item'ам применить новый Typeface?

Изменено пользователем ZuBy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У AlertDialog итемы реализованы в котроле ListVIew. Поэтому нужно просто получить ListVIew через http://developer.android.com/intl/ru/reference/android/app/AlertDialog.html#getListView() и присвоить ему шрифт

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще есть вариант просто сделать свой стиль диалогового окна и подсунуть его с нужным шрифтом. Тогда будет проще, но придется самому стиль сделать. Так же исходник стиля можно взять с исходников Android SDK

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У AlertDialog итемы реализованы в котроле ListVIew. Поэтому нужно просто получить ListVIew через http://developer.android.com/intl/ru/reference/android/app/AlertDialog.html#getListView() и присвоить ему шрифт

уже копался тут, не понял куда именно вставить setTypeface...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще есть вариант просто сделать свой стиль диалогового окна и подсунуть его с нужным шрифтом. Тогда будет проще, но придется самому стиль сделать. Так же исходник стиля можно взять с исходников Android SDK

в этом придётся долго разбираться...

 

кодом ведь почти получилось, только нужно понять куда в JListView присвоить свой Typeface

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Похожие публикации

    • Автор: rakhmet
      Заполняю в рантайме ListView:
      procedure TAddForm.ConnectClick(Sender: TObject); var LI: TListViewItem; begin with Query do begin Open; while not Eof do begin LI := ListView1.Items.Add; LI.Text := Query.FieldByName('Type').AsString; LI.Detail := Query.FieldByName('Cargo').AsString + #13#10 + Query.FieldByName('Weight').AsString; Next; end; end; end; Как видно, Detail разбивается и заполняется в две строки (оказалось, что так удобнее смотреть).
       
      Но на обеих строках сухие цифры:

       
      Поэтому хотелось бы в начало обеих строчек вставить свои иконки, чтобы в конечном итоге выглядело как-то так:

       
       
      Есть идеи, как это можно сделать? А то товарищ kramler в другой теме писал, что не видит масла стоя перед открытым холодильником - так вот я сейчас уже в таком состоянии, что начинаю забывать, где мой собственный холодильник стоит, не говоря уже о масле в нём 
      И смешно, и грустно...
    • Автор: gresaggr
      Как избежать повторных нажатий/ закликиваний на кнопку?
      Имеется следующий код:
      procedure Tfm.ButtonPrevCardClick(Sender: TObject);
      begin
        ButtonPrevCard.Enabled := false;
        Application.ProcessMessages;

       // здесь код по смене карты + пауза в 2 секунды

        ButtonPrevCard.Enabled := true;
        Application.ProcessMessages;
      end;
      Под Windows повторных нажатий/закликиваний при этом не происходит.
      А под Андроид, если пользователь быстро подряд нажал несколько раз, то сработает также несколько раз.
       
    • Автор: rakhmet
      Для FMX-приложения понадобилось разместить кнопки с битмапами в заголовке OSX-окна:

      Здесь был, это читал, но подходящего Delphi-решения найти не смог. Есть какие-нибудь идеи?
    • Автор: Error
      Ссылка: https://habrahabr.ru/post/317814/
      Автор: Пётр (Error)
      Описание:
      За годы существования фреймворк Fire-Monkey(FMX) претерпел множество изменений, и если с самого начала он был очень сырым и ненадежным, то сейчас это намного более стабильная и надежная платформа.
      Данная заметка представляет из себя сборник из нескольких полезных советов для разработчиков использующих данный фреймворк...
    • Автор: gresaggr
      Добрый день.
      IDE: Delphi 10.1 Berlin Update2
      OS: Windows 7/64 ->Android (тестировал на 4.4.4)
      Вопрос 1:
       
      Пытаюсь загрузить в Listbox файл с русскими словами: ListBox1.Items.LoadFromFile(TPath.Combine(TPath.GetDocumentsPath, 'test1.txt'));
      При запуске на устройстве выдает ошибку: No mapping for the Unicode character exists in the target multi-byte code page
      Файл пытался сохранить и в UTF-8, и в ANSI, и в Unicode - без разницы (после смены кодировки делал Deployment)
      Как можно это победить?
      Вопрос 2:
      Вставил напрямую в дизайн-моде список этих же слов (из файла вопрос1) в Listbox - при старте программа очень долго думает. Слов порядка 10000. Как-то можно это ускорить?


       


       


       
    • Автор: Dozent
      Доброго всем дня. Появилась сильная потребность работать  с IP камерой. Необходим захват,, запись, воспроизведение и покрутка. Подскажите у кого есть похожий опыт работы. Какие компоненты, дайте статьи почитать...
      Камера как я понял пише тв mjpeg
    • Автор: lala4a
      Доброе время суток .
      Я только начал знакомится с потоками , не судите строго .
      Вот код . Смысл которого через отдельный поток загружать изображение с сервера .
      unit Unit5; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,iduri,idhttp, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects, FMX.Controls.Presentation, FMX.StdCtrls; type ThreadHTTP=class(TThread) private Stream:TMemoryStream; bmp:tbitmap; url:string; public constructor Create(abmp:tbitmap; aurl: String); procedure Execute;override; // procedure ShowResult; end; type TForm5 = class(TForm) Button1: TButton; Image1: TImage; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure getpic(pic: string; img: Tbitmap); end; var Form5: TForm5; implementation {$R *.fmx} constructor ThreadHTTP.Create(abmp:tbitmap;aurl:string); begin inherited Create(false); bmp := abmp; url:=aurl; end; procedure ThreadHTTP.Execute; var j:integer; idhttp : TIdHTTP; ms:tmemorystream; png:tbitmap; begin ms := TMemoryStream.Create; IdHTTP := TIdHTTP.Create(nil); url:=TIdURI.URLEncode(url); try idhttp.Get(url,ms); ms.Position := 0; finally bmp.LoadFromStream(ms); idhttp.Free; ms.Free; end; end; procedure TForm5.Button1Click(Sender: TObject); begin getpic('krovat1',form5.Image1.Bitmap); end; procedure TForm5.getpic(pic: string; img: Tbitmap); var zapros:string; idhttp:tidhttp; MyHTTP:ThreadHTTP; begin zapros:='http://127.0.0.1/getimage_'+pic; MyHTTP:=ThreadHTTP.Create(img,zapros); MyHTTP.FreeOnTerminate := true; MyHTTP.resume; end; end. Код корявый , но работает в win32 .  В Android ничего не происходит .
      Помогите разобраться , пожалуйста .
       
    • Автор: Dozent
      Добрый день. Мне нужно чтобы закладки TabControl распологались слева. Как это можно сделать?
    • Автор: Vizit0r
      Delphi Seattle, Android 5.0.1
      Формирую картинку через ScanLine. На выходе полученный битмап рисуется на полотне TImage, на котором перед этим был нарисован Rect.
      GlobalBitmap - формированный tbitmap.
                 with ObjectPreviewImage.Bitmap.Canvas do             begin               BeginScene;               Clear(TAlphaColorRec.White);               DRect := TRectF.Create(0, 0, GlobalBitmap.Width + 8, GlobalBitmap.Height + 8);               DrawRect(DRect, 0, 0, AllCorners,                        StealthForm.ObjectPreviewImage.AbsoluteOpacity);               DRect := TRectF.Create(0, 0, GlobalBitmap.Width, GlobalBitmap.Height);               DrawBitmap(GlobalBitmap,DRect,                  TRectF.Create(2, 2, GlobalBitmap.Width + 2, GlobalBitmap.Height + 2), 1);               EndScene;             end;  
      Проблема собственно в чем - в андроидной версии слева и внизу рамка "съедается". В Win32 версии все отлично. На прилагаемых скриншотах это четко видно.
      Документацию читал, гугл гуглил.
       
      Что я делаю не так? Или это неизвестные подводные камни андроидного рисования на полотне?
       
      P.S. Картинка одинаковая, цвет к определенной области применяется не верно. Походу тоже андроидные приколы. Но с этим я уже разберусь.
      P.P.S. Уже разобрался с цветом - под андроидом Blue и Red в пикселе надо поменять местами. А насчет канвы - не получается никак.
      P

    • Автор: Error
      Я создал данную тему чтобы выяснить наличие спроса на кастомные FMX компоненты. При наличии спроса будут появляться новые FMX компоненты.
       
      TEsImageSelection

      Начну с компонента позволяющего выделать часть изображения или фотографии, может быть полезно для создания аватарки в вашем приложении, графических редакторах, и подобном. Предусмотрен режим контроля границ, пропорционального выделения - к примеру для квадратной\круглой аватараки.
      Интересно наличие спроса на данный компонент за цену в $8? (+вы получаете поддержку и новые версии в течении года)
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу