Cross platform code to adjust the button widths based on their text.
B4X:
Private Sub ArrangeButtons(Dialog1 As B4XDialog, Canvas1 As B4XCanvas)
Dim offset As Int = Dialog1.Base.Width - 2dip
Dim gap As Int = 4dip
For Each BtnType As Int In Array(xui.DialogResponse_Cancel, xui.DialogResponse_Negative, xui.DialogResponse_Positive)
For Each btn As B4XView In Dialog1.Base.GetAllViewsRecursive
If Initialized(btn.Tag) And btn.Tag = BtnType Then 'ignore
Dim r As B4XRect = Canvas1.MeasureText(btn.Text, btn.Font)
Dim width As Float = r.Width + 30dip 'change padding as needed
btn.SetLayoutAnimated(0, offset - width - gap, btn.Top, width, btn.Height)
offset = offset - width - gap
End If
Next
Next
End Sub
Usage:
B4X:
Private Sub Button1_Click
Dim rs As Object = Dialog.Show("Testing", "abcde abc", "fg gf", "hk")
ArrangeButtons(Dialog, cvs) 'cvs is a global B4XCanvas
Wait For (rs) Complete (Result As Int)
End Sub
Example is attached.