Беседа часами об изменении выравнивания кнопок внутри 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;
Я выбрал RIGHT, так как сторона кнопок внутри диалога всегда противоположна стороне, к которой текст привязан. (Да - я тоже попытался LEFT, ничего не изменилось).
Это не работает. У кого-нибудь есть идея, как этого достичь? Кажется, они просто застряли на своем месте.
Изменить: Заголовок также не выровнен, я только что подтвердил это (по какой-то причине он появляется справа, как и моя системная конфигурация, а не как моя локальная конфигурация).