如何对话框保持外部触摸打开

时间:2013-06-26 05:57:22

标签: android android-alertdialog

我的屏幕上有对话框。当我触摸屏幕对话框关闭时。我希望对话框不应该在外面触摸时关闭。我的代码如下: -

public class Dialogue extends Activity{

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialogue);
        this.setFinishOnTouchOutside(false);
        displayDialogue();

    }
    private void displayDialogue(){
        final AlertDialog.Builder myDialogue = new AlertDialog.Builder(this);
        myDialogue.setMessage("Please check your voice input output settings.It should be ON" );
        TextView messageView = new TextView(this);
        messageView.setGravity(Gravity.CENTER);
        myDialogue.setView(messageView);
        myDialogue.setPositiveButton("OK",  new DialogInterface.OnClickListener()
        {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                Intent i = new Intent(Dialogue.this, MainActivity.class);
                startActivity(i);
                finish();
            }
        });

        AlertDialog dialog = myDialogue.create();
        dialog.show();
    }

6 个答案:

答案 0 :(得分:3)

setCancelable(boolean cancelable): 设置对话框是否可取消。 Read More

myDialogue.setCancelable(false);

答案 1 :(得分:3)

您只需要将cancelable设置为false,这样在对话外部触摸时将保持打开状态。 在您的代码中尝试此操作:

myDialogue.setCancelable(false);

答案 2 :(得分:2)

添加此行

myDialogue.setCancelable(false);

希望这会有所帮助..

答案 3 :(得分:2)

将cancelable属性设置为false

private void displayDialogue(){
final AlertDialog.Builder myDialogue = new AlertDialog.Builder(this);
myDialogue.setMessage("Please check your voice input output settings.It should be ON" );
TextView messageView = new TextView(this);
messageView.setGravity(Gravity.CENTER);
myDialogue.setView(messageView);

myDialogue.setCancelable(false);

myDialogue.setPositiveButton("OK",  new DialogInterface.OnClickListener()
{

    @Override
    public void onClick(DialogInterface dialog, int which) {
        Intent i = new Intent(Dialogue.this, MainActivity.class);
        startActivity(i);
        finish();
    }
});

AlertDialog dialog = myDialogue.create();
dialog.show();
}

答案 4 :(得分:1)

<{1}}之后的

inisde displayDialog()方法,添加以下行:

.setMessage()

答案 5 :(得分:1)

你可能已经有了这个,但是对于未来的人来说,这对我有用: 您可以覆盖外部触摸,在对话框中不执行任何操作,如此处https://stackoverflow.com/a/5831214

所示