为更改 AlertDialog(support.v7 之一)内按钮的对齐方式而奋斗了几个小时,因为它们不会根据区域设置视图方向自行对齐,尽管整个应用程序确实左对齐,AlertDialog 中的文本也左对齐。
(你说为什么会发生这种情况?我正在以编程方式将区域设置语言配置为“en”,因为这是我的默认应用程序语言,即使系统区域设置可能是其他语言)。
就像我说的,我不需要触摸对话框内的消息,但作为一个例子,这就是如何改变它的方向:
TextView messageView = (TextView)dialog.findViewById(android.R.id.message);
messageView.setGravity(Gravity.RIGHT); // or LEFT
当然,它不适用于按钮,因为我需要更改布局重力。
以下是我找到按钮的方法(当然是在 AlertDialog.Builder 上调用 show() 之后,否则它们将为空):
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,因为对话框内按钮的一侧始终与文本对齐的一侧相对。(是的 - 我也尝试过向左,没有任何改变)。
这是行不通的。有谁知道如何实现这一目标?看来他们只是被困在自己的位置上。
编辑:
标题也没有对齐,我刚刚确认了这一点(由于某种原因它出现在右侧,就像我的系统配置,而不是像我的区域设置配置)。