Равиль Зарипов (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. В текущей реализации, только при помощи правок исходников. Обсуждение тут

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


Ссылка на сообщение
Поделиться на другие сайты
  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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Mohamed BEN AMMAR
      hello 
      i'm using delphi fmx for building android App
      i have this code for Activating The WI-FI icon from android device:
      This could be found here .
      =========== code ==================
      uses
        Androidapi.Helpers,
        Androidapi.JNI.JavaTypes,
        Androidapi.JNI.GraphicsContentViewText,
        Androidapi.JNIBridge,
        Androidapi.JNI.WifiManager;
        procedure SetWifiEnabled (AEnable: Boolean); var   Obj: JObject;   WifiManager: JWifiManager; begin   Obj: = SharedActivityContext.getSystemService (TJContext.JavaClass.WIFI_SERVICE);   if Obj = nil then     Exit;     WifiManager: = TJWifiManager.Wrap ((Obj as ILocalObject) .GetObjectID);   WifiManager.setWifiEnabled (AEnable); end; 
       
       My question is About Activating Android location:
        Is it possible to activate the service location icon from android device
       programatically without using the Location or TLocationSensor component ....?
      however I know exactly that google has been Deactivate this API since android "4" just for security reasons .....
      but i have seen many apps in playstore can activate the service without using 
      this code here ask the user for activate the location manually .... procedure TForm1.GPSSettings; {$IFDEF ANDROID} var Intent: JIntent; {$ENDIF} begin {$IFDEF ANDROID} Intent := TJIntent.Create; Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_LOCATION_SOURCE_SETTINGS); TAndroidHelper.Activity.startActivity(Intent); {$ENDIF} end; in other versions like lolipopup can show just the Allow Permission system dialog timer ....( Asking the user for Allowing this App to Activate the service location ......) 
      I have an android device with lolipopup version and i try to execute the location EMBARCADERO sample but 
      this one can not activate the service location ICON even  my device show me the Allow permission dialog where i choose yes allow
      with never ASK....
      Finally ,  I like the WI-FI code above .....
      and i'm wondering if someone here can do this task for me (i need a unit as the WI-FI code above which can offer me
      the option to activate the Service Location ICON )
      I'm ready to paid for that task .....
       
      Sincerelly: Brave.
    • От PavelS
      Здравствуйте! Начал изучать FireMonkey  и столкнулся с тем, что TBitmap не поддерживает размер изображения больше 8132, кажется. Т.е. большие размеры рисунка он грузит, но за счёт потери качества, размер пиксела растёт, а размер рисунка по оси всё равно не превышает 8132. В то же время в простом дельфи можно грузить и работать с гораздо большими размерами, например, один из файлов имеет размер 61216 х 1486 точек. Подскажите пожалуйста, есть ли возможность работать с большими файлами в FireMоnkey и как это можно организовать? Программа создаётся для работы только в Windows.
    • От SIARHEI RAHOUSKI
      Создал проект там куча компонентов. Но разворачивании формы на весь экран компоненты размер не меняют:
      Прочитал про свойства align Но как только я выставлю Group box например left другим right все сбивается в кучу и поправить это не могу. 
      Как настроить align ?

    • От SIARHEI RAHOUSKI
      Как сделать форму с компонентами под все разрешения?

    • От SIARHEI RAHOUSKI
      Как сделать мозаику (drag/drop) ? Получается есть 2 прямоугольника (которые надо перетаскивать)  и есть ещё 2 прямоугольника (которые должны принимать) и ещё есть кнопка проверки. При нажатии определяет правильно ли разместили прямоугольники.
    • От SIARHEI RAHOUSKI
      Как задать градиентную заливку TChart? именно самих столбцов. 

    • От SIARHEI RAHOUSKI
      При нажатии на Label действия не происходят
      procedure TForm2.Label11Click(Sender: TObject);
      begin
      Button1.visible:= true;
      {label7.Font.Style:= [];
      label8.Font.Style := [];
      label9.Font.Style := [];
      //label11.Font.Style := [fsbold];
      label10.Font.Style := [];  }

        GroupBox12.Visible := false;
        GroupBox13.Visible := false;
        GroupBox14.Visible := false;
        GroupBox15.Visible := true;
        GroupBox16.Visible := false;
      end;
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу