AlertDialog中的自定义按钮以编程方式

时间:2017-11-14 15:40:05

标签: java android

经过对stackoverflow和google的大量研究后,我发现我的问题没有问题。 好吧,我想在对话框的右上角创建一个高度= 50,宽度= 50的按钮。 好吧,我可以毫无问题地设置高度,但宽度不起作用。 我尝试创建一个linearLayout,但params从未考虑过。 这是我的代码(高度设置正确):

private void hello(){
    Button button = new Button(this);

    button.setMinimumWidth(0);
    button.setWidth(50);
    button.setMinimumHeight(0);
    button.setHeight(50);

    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v){
            sayHello();
        }
    });

    new AlertDialog.Builder(this) 
            .setTitle("Hello world")
            .setView(button)
            .setPositiveButton("ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton){
                    Toast.makeText(getApplicationContext(), "Click !", 
                    Toast.LENGTH_SHORT).show();
                    hello();
                }
            })

            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton){
                }
            })
            .show();
}

我尝试过:

        button.setLayoutParams(new LinearLayout.LayoutParams(50, 50));

没有任何成功。

并且:

LinearLayout.LayoutParams rlp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                                    LinearLayout.LayoutParams.WRAP_CONTENT);
    rlp.height = 50;
    rlp.width = 50;

    button.setText("i");
    button.setLayoutParams(rlp);

并且不起作用......

我真的不明白发生了什么,你能帮帮我吗?

我确切地说,我没有任何xml,它只适用于java。

1 个答案:

答案 0 :(得分:0)

我最终决定创建自己的警告对话框,以便根据需要自定义它。 我不得不创建一个xml文件并使用了inflater。 setHeight工作的原因而不是setWidth将永远保持神秘......

感谢您的帮助