有没有办法扩展AlertDialog然后完全控制它的外观?

时间:2013-02-06 20:25:21

标签: android android-alertdialog android-dialogfragment

我在看这里的文档: http://developer.android.com/guide/topics/ui/dialogs.html#PassingEvents

他们所有的例子似乎忽略了开发人员完全改变OK |的外观和/或定位的潜在愿望取消按钮。

我觉得DialogFragment的解决方案很接近,但我仍然没有明显的方法来定义我的活动中的View应该是OK按钮,以便我可以轻松地将回调附加到它。

我错过了什么?或者是否真的无法在任何扩展AlertDialog或DialogFragment的东西中操纵按钮的外观和位置?

1 个答案:

答案 0 :(得分:2)

您可以使用Dialog并为其添加自己的自定义布局,并控制其中每个视图的外观。以下是如何执行此操作的示例:

final Dialog alert = new Dialog(FingerPaintActivity.this, android.R.style.Theme_Light_Panel);
alert.requestWindowFeature(Window.FEATURE_NO_TITLE); // no title 
alert.getWindow().getAttributes().windowAnimations = R.style.PauseDialogAnimation; // this is used for custom animation when dialog is showing and hiding 
alert.setContentView(getLayoutInflater().inflate(R.layout.stamps, null)); // here is your custom layout
alert.getWindow().setLayout(width-50, (height-100)); // set height / width

你可以使用set listeners来查看你的视图(例如按钮):

Button myOkBtn = (Button) alert.findViewById(R.id.myOkBtn);
myOkBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

        }
    });