我无法找到正确修改DialogPreference
的确定/取消按钮的方法。
我的应用中的所有输入对话框都有以下按钮框:
这是我在DialogPreference
:
当然,
不可接受,因为按钮被交换并且中间有一条可怕的线。
我应用更改按钮的方法是Dialog
使用showDialog
方法并为布局设置背景:
public class RingtonePreference extends DialogPreference
{
@Override
protected void showDialog(Bundle state)
{
super.showDialog(state);
Dialog d = getDialog();
Utils.setAlertDialogButtons(getContext(), (AlertDialog)d, true);
}
...
static public void setAlertDialogButtons(Context c, final AlertDialog alertDialog, final boolean hasNegative)
{
try
{
int size = (int)c.getResources().getDimension(R.dimen.btn_size);
TableRow.LayoutParams lp = new TableRow.LayoutParams(size, size);
lp.setMargins(size/2, 5, size/2, 5);
Button posBtn = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
LinearLayout tr = (LinearLayout)posBtn.getParent();
tr.setGravity(Gravity.CENTER);
tr.setBackgroundResource(R.drawable.fixed_buttons_background);
posBtn.setText("");
posBtn.setLayoutParams(lp);
posBtn.setBackgroundResource(R.drawable.btn_apply_selector);
if (hasNegative)
{
Button negBtn = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
negBtn.setText("");
negBtn.setLayoutParams(lp);
negBtn.setBackgroundResource(R.drawable.btn_back_selector);
}
}
catch (Exception e)
{
e.printStackTrace();
Log.e("U", e.getMessage());
}
}
我放弃了,但在此之前,我在这里寻求帮助。 放弃意味着" 离开原始设置面板" (的可怕):
所以,请,帮助:)
答案 0 :(得分:0)
确保您为标准应用屏幕和首选项屏幕使用相同的主题,以获得一致的结果。
未经测试但应该有效:如果您想更改底部按钮栏的外观,您可以做的是:
覆盖setPositiveButtonText()
中的setNegativeButtonText()
和DialogPreference
,使其成为无操作,以便Android不会显示标准"确定"和"取消"按钮栏。
然后在您的覆盖showDialog()
方法中,像现在一样检索Dialog
后,将其转换为AlertDialog
并致电setView()
以通过自定义页脚布局。它将显示在列表下方的“确定/取消”按钮的相同位置。