FeLDMARShaL Опубликовано 13 декабря, 2017 Поделиться Опубликовано 13 декабря, 2017 Коллеги. Я верю в коллективный разум. Требуется изменить визуально индикатор прогресса. Для этого к проекту необходимо подгружать стили. За основу я взял тему http://manjunath4android.blogspot.ru/2015/12/display-progress-dialog-without-text.html Будем менять индикатор на тот который указан в теме. Что было сделано с моей стороны: 1) Прилинковал все необходимые фалы к нашему проекту 2) Проконсультировался с разработчиком компонентов Полазил по исходникам, в результате чего понял что поменять стиль в текущей реализации уже должно получится. Для этого есть 2 свойства у класса TfgActivityDialog: Theme и ThemeID. Если со свойством Theme все понятно, его необходимо задать как TfgDialogTheme.Custom, то с ThemeID не так все просто. На просторах интернета нашел что это такое (R.layout.my_progress) и вроде бы даже перевел на Pascal: TAndroidHelper.Context.getResources.getIdentifier(StringToJString('my_progress'), StringToJString('layout'), TAndroidHelper.Context.getPackageName), но в конечном итоге имеем вот это: А ожидается вот это: На кнопку которая должна отобразить индикатор активности повесил вот такой код: procedure TmainForm.Button1Click(Sender: TObject); var fg: TfgActivityDialog; themId: Integer; begin themId := TAndroidHelper.Context.getResources.getIdentifier(StringToJString('my_progress'), StringToJString('layout'), TAndroidHelper.Context.getPackageName); fg := TfgActivityDialog.Create(Self); try if themId<>0 then begin fg.Theme := TfgDialogTheme.Custom; fg.ThemeID := themId; fg.Title := 'Title'; fg.Message := 'Message'; Button1.Text := 'TfgDialogTheme.Custom' end else Button1.Text := 'TfgDialogTheme.Auto'; fg.Show; sleep(3000); fg.Hide; finally FreeAndNil(fg); end; end; Alisson R Oliveira 1 Цитата Ссылка на комментарий
FeLDMARShaL Опубликовано 13 декабря, 2017 Автор Поделиться Опубликовано 13 декабря, 2017 Собственно вот сам мини проект: test.zip Цитата Ссылка на комментарий
FeLDMARShaL Опубликовано 13 декабря, 2017 Автор Поделиться Опубликовано 13 декабря, 2017 Ну собственно на этом усе, ждемс идей . Я верю в силу коллективного разума Цитата Ссылка на комментарий
Администраторы Brovin Yaroslav Опубликовано 13 декабря, 2017 Администраторы Поделиться Опубликовано 13 декабря, 2017 Судя по официальной доке по кастомизации диалога: https://developer.android.com/guide/topics/ui/dialogs.html?hl=ru#CustomLayout нужно именно создать тему, а не стиль. В приведенной тобой ссылке стиль применяется не к диалогу, а к контенту, что не гибко с точки зрения кастомизации, так как прозрачность диалога задается на уровне кода, а не стиля. Надо посмотреть тут: http://developer.alexanderklimov.ru/android/theme.php про темы в андроиде. И попробовать сделать именно тему со стилем диалога. И потом ее уже применить. Это должно сработать. Kitty 1 Цитата Ссылка на комментарий
FeLDMARShaL Опубликовано 19 декабря, 2017 Автор Поделиться Опубликовано 19 декабря, 2017 После упорных попыток, не получилось подружить компонент с созданной темой, возможно ее ид как то не так получаю и ниже приведенный код возвращает что то не то themId := TAndroidHelper.Context.getResources.getIdentifier(StringToJString('styles_dialog'), StringToJString('layout'), TAndroidHelper.Context.getPackageName) Но реализовать нужно было пришлось пофиксить немного стандартные компоненты, и именно в части const UndefinedThemeID = -1; Теперь компоненты считаю что ThemeID=0 - это кастомная тема. После чего, вот такой код (и измненная стандартная тема приложения): if not Assigned(fg_my) then begin fg_my := TfgActivityDialog.Create(nil); fg_my.Theme := TfgDialogTheme.Custom; fg_my.ThemeID := 0; end; fg_my.Show; sleep(3000); fg_my.Hide; Приводят вот к такому результату (разумеется индикатор крутится как надо): kami и sinuke 2 Цитата Ссылка на комментарий
FeLDMARShaL Опубликовано 19 декабря, 2017 Автор Поделиться Опубликовано 19 декабря, 2017 Думаю тема стилизации этого индикатора раскрыта не полностью, но на текущий момент мне этого хватит. Было бы круто если значение переменной UndefinedThemeID=-1 перекочевало в основную ветку (т.к. тема со ид равным 0 - это именно штатная тема приложения, которая многими меняется) Цитата Ссылка на комментарий
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.