Изменение выравнивания кнопок AlertDialog
В течение нескольких часов боролись за изменение выравнивания кнопок внутри AlertDialog (support.v7 one), поскольку они не будут выравниваться в соответствии с направлением просмотра локали,несмотря на то, что все приложение выравнивается по левому краю, а также текст внутри AlertDialog.
(Почему это произойдет, говорите вы? Я программно настраиваю язык локали на «en», так как это мой язык приложения по умолчанию, хотя системная локаль может быть чем-то другим).
Итак, как я уже сказал, мне не нужно трогать сообщение внутри диалога, но, как пример, вот как изменить его направление:
TextView messageView = (TextView)dialog.findViewById(android.R.id.message);
messageView.setGravity(Gravity.RIGHT); // or LEFT
Конечно, это не работает на кнопках, так как мне нужно изменить гравитацию макета.
Вот как я могу найти кнопки (после того, как я вызову show () на AlertDialog.Builder, конечно, иначе они будут нулевыми):
AppCompatButton accept = (AppCompatButton)dialog.findViewById(android.R.id.button1);
AppCompatButton cancel = (AppCompatButton)dialog.findViewById(android.R.id.button2);
И вот как я пытаюсь изменить их выравнивание внутри родительского LinearLayout:
((LinearLayout.LayoutParams)accept.getLayoutParams).gravity = Gravity.RIGHT;
((LinearLayout.LayoutParams)cancel.getLayoutParams).gravity = Gravity.RIGHT;
Я выбрал ПРАВО, поскольку сторона кнопок внутри диалога всегда противоположна стороне, по которой выравнивается текст. (Да - я тоже попробовал ВЛЕВО, ничего не изменилось).
Это не работает У кого-нибудь есть идеи как этого добиться? Кажется, они просто застряли на своем месте.
Изменить: Заголовок также не выровнен, я только что подтвердил это (по какой-то причине он отображается справа, как моя конфигурация системы, а не как моя языковая конфигурация).