Перейти к содержанию
Fire Monkey от А до Я

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


Рекомендуемые сообщения

  • Модераторы

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

 

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. В текущей реализации, только при помощи правок исходников. Обсуждение тут
Ссылка на комментарий
  • Модераторы
  1. В следующей версии я как раз планировал добавить событие OnClose и OnShow
  2. Подумаю на счет Windows и OSX реализации
  3. В текущей реализации, только при помощи правок исходников. Обсуждение тут

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

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

Ссылка на комментарий
  • Администраторы

Дело в том, что в 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

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...