Delphi Firemonkey — простое всплывающее меню на AndroidAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Delphi Firemonkey — простое всплывающее меню на Android

Сообщение Anonymous »

Я использую обычный элемент управления MultiView для меню своего приложения (основной Android). Но я также хочу иметь своего рода контекстное меню, которое раскрывается, когда пользователь нажимает кнопку меню в правом верхнем углу. Примеры:
  • Приложение Firefoy для Android – 3 точки открывает меню справа.
  • Приложение WhatsApp для Android — 3 точки. откройте меню, чтобы создать новую группу или открыть настройки.
Что я пробовал, но безуспешно:
  • Обычное всплывающее меню Delphi — не поддерживается на Android
  • TListBox со связанной анимацией, которая появляется при нажатии кнопки, работает, но не как наложение, пользовательский интерфейс перемещается вниз или в сторону, а не так, как ожидает пользователь. Протестировал некоторые комбинации свойства Align Listbox (Right, None), а также TabControl (CLient, Contents).
  • TPanel, с анимацией, почти такой же, как TListBox, просто нет Z-порядок
Стиль — это хорошо, но не так важно. Я уверен, что есть простое решение, но я не смог его реализовать. Я использую Delphi 12.2, тестирую телефоны Android — Samsung с Android 13, 14.

Код: Выделить всё

// OnClick handler for the 3-dot button
// works, but moves all controls on my TTabControl to the left :-(
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ListBoxMenu.Visible := not ListBoxMenu.Visible;
if ListBoxMenu.Visible then
begin
ListBoxMenu.ApplyStyleLookup;
ListBoxMenu.RealignContent;
end;
end;

Код: Выделить всё

// head of .fmx file
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 480
ClientWidth = 640
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object ToolBar1: TToolBar
Size.Width = 640.000000000000000000
Size.Height = 46.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
object SpeedButton1: TSpeedButton
Align = Right
Margins.Right = 5.000000000000000000
Position.X = 589.000000000000000000
Size.Width = 46.000000000000000000
Size.Height = 46.000000000000000000
Size.PlatformDefault = False
StyleLookup = 'detailstoolbutton'
Text = 'SpeedButton1'
OnClick = SpeedButton1Click
end
end
object ListboxMenu: TListBox
Align = Right // also tried None
Margins.Right = 30.000000000000000000
Position.X = 528.000000000000000000
Position.Y = 49.000000000000000000
Size.Width = 107.000000000000000000
Size.Height = 144.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
Visible = False
DisableFocusEffect = True
DefaultItemStyles.ItemStyle = ''
DefaultItemStyles.GroupHeaderStyle = ''
DefaultItemStyles.GroupFooterStyle = ''
Viewport.Width = 103.000000000000000000
Viewport.Height = 140.000000000000000000
object ListBoxItem1: TListBoxItem
TabOrder = 0
Text = 'MenuItem 0'
OnClick = ListBoxItem1Click
end
object ListBoxItem2: TListBoxItem
Position.Y = 19.000000000000000000
TabOrder = 1
Text = 'MenuItem 1'
end
object ListBoxItem3: TListBoxItem
Position.Y = 38.000000000000000000
TabOrder = 2
Text = 'MenuItem 2'
end
end
object TabControl1: TTabControl
Align = Client // also tried Contents
Size.Width = 640.000000000000000000
Size.Height = 434.000000000000000000
Size.PlatformDefault = False
TabIndex = 1
TabOrder = 4
TabPosition = PlatformDefault
Sizes = (
640s
408s
640s
408s)
object TabItem1: TTabItem
CustomIcon = <
item
end>
TextSettings.Trimming = None
IsSelected = False
Size.Width = 69.000000000000000000
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
StyleLookup = ''
TabOrder = 0
Text = 'TabItem1'
ExplicitSize.cx = 86.000000000000000000
ExplicitSize.cy = 30.000000000000000000
end

[EDIT 0]: добавлен нерабочий код.
[Edit 1]: разъяснение проверенных значений свойства Align.

Подробнее здесь: https://stackoverflow.com/questions/792 ... on-android
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Delphi Firemonkey — простое всплывающее меню на Android
    Anonymous » » в форуме Android
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Delphi Firemonkey — простое всплывающее меню на Android
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Delphi Firemonkey — простое всплывающее меню на Android
    Anonymous » » в форуме Android
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Delphi Firemonkey — простое всплывающее меню на Android
    Anonymous » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Приложение Delphi 10.3 Firemonkey для Android — термопринтерная печать — USB c
    Anonymous » » в форуме Android
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»