如何使用中性按钮创建自定义首选项?

时间:2011-05-04 15:10:25

标签: android preferences

我使用下面的代码创建自定义首选项。 xml布局文件包含ButtonEditTextTextView。此自定义布局显示在Alert内,带有“确定”和“取消”按钮。这一切都运作良好。

我想在“确定”和“取消”按钮旁边添加第三个按钮(中性按钮)。我已尝试使用AlertBuilder课程,但无法弄清楚如何合并我的自定义xml布局和中性按钮。

如何做到这一点?

目前有......

public class MelsMessage extends DialogPreference {

    Button bMessage;
    EditText eMessage;
    TextView tMessage;

    public MelsMessage(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }



    protected View onCreateDialogView() {

        LayoutInflater layoutInflater = LayoutInflater.from(getContext());
        View view = layoutInflater.inflate(R.layout.dialog_pref_mess, null);

        //UI elements

        bMessage = (Button) view.findViewById(R.id.buttonMessage);
        eMessage = (EditText) view.findViewById(R.id.edittextMessage);
        tMessage = (TextView) view.findViewById(R.id.textviewMessage);


        return view;        
    }

}

3 个答案:

答案 0 :(得分:6)

我看到你的问题有点陈旧了,也许你已经有了问题的答案,但这是一个扩展DialogPreference的类的解决方案。

首先,您必须覆盖 MelsMessage 类中的onPrepareDialogBuilder方法:

@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder)
{
    super.onPrepareDialogBuilder(builder);
    builder.setNeutralButton("hello", this);
}
this方法中的

setNeutralButton DialogPreference 类实现的DialogInterface.OnClickListener接口。

您要做的最后一件事是覆盖 MelsMessage 类中的onClick方法:

@Override
public void onClick(DialogInterface dialog, int which)
{
    super.onClick(dialog, which);

    switch (which)
    {
        case DialogInterface.BUTTON_POSITIVE:
            // do things for the right button
            break;

        case DialogInterface.BUTTON_NEGATIVE:
            // do things for the left button
            break;

        default:
            // do things for the center button
            break;
    }
}

如果你想处理另一个班级中的点击,你所要做的就是在这个班级中实现DialogInterface.OnClickListener

希望这会对你有所帮助。欢呼声。

答案 1 :(得分:0)

当您覆盖onCreateDialogView并且未设置setPositiveButtonsetNegativeButton时,确定和取消按钮应该消失,不是吗?因为在该方法中,您将覆盖默认布局并设置自定义布局。

如果是这种情况,那么您应该使用3个按钮创建自己的自定义底部布局,并将其添加到膨胀的按钮中。尝试搜索并实现具有所有必要实现的“底部ButtonBar”,因为我没有在文档中看到任何方法或方法来实现像常规Dialog上的中性按钮。

答案 2 :(得分:0)

您可以使用3个按钮创建自定义对话框或编写

等代码
Dialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int id) {



    } }); 

 Dialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Cancle", new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int id) {



    }}); 

 Dialog.setButton(AlertDialog.BUTTON_NEUTRAL, "Do Nothing" new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int id) {


    }});