如何实现更好的自定义Diailog表单

时间:2014-12-08 20:33:22

标签: java android

我正在开发一个日历应用程序,并希望在显示here的模式容器上显示添加事件表单。我试图创建一个自定义对话框但它确实做我想要的(here is a snapshot of my current dialog box),这是容器的宽度覆盖我的屏幕的90%。无论如何,他们可以调整对话框的大小或使用任何其他合适的容器,提前谢谢。

这是我的自定义对话框代码

public class QuickAddEventDialogBox extends Dialog implements View.OnClickListener{

private Context context;
private Button save, discard;

public QuickAddEventDialogBox(Context context) {
    super(context);
    this.context = context;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.quick_add_event_dialogbox);


    save = (Button) findViewById(R.id.btn_save);
    discard = (Button) findViewById(R.id.btn_discard);

    save.setOnClickListener(this);
    discard.setOnClickListener(this);

}

3 个答案:

答案 0 :(得分:0)

获取窗口并致电setLayout(width, height)。像这样:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.quick_add_event_dialogbox);

    //set layout here  
    this.getWindow().setLayout(600, 400);

    ...

  }

答案 1 :(得分:0)

您是否尝试使用对话框的布局来使用 LinearLayout 并使用权重?

让你的 LinearLayout match_parent大小并且里面有一个子(对话框视图),权重为0.9(weightSum为1)并使用gravity =“center”或layout_gravity =“center”

在此处阅读 LinearLayout

http://developer.android.com/guide/topics/ui/layout/linear.html

以下是一个例子:

How to make layout to be 80% of the width of the screen?

我相信这会以最优雅的方式解决您的问题。

答案 2 :(得分:0)

您可以使用以下方法调整对话框大小:

getDialog().getWindow().setLayout(w,h);

如果你想要90%的宽度:

Display display = getWindowManager().getDefaultDisplay();
getDialog().getWindow().setLayout(display.getHeight() * 0.9, 
    display.getWidth() *x [or wrap_content]);

也有人建议使用重量,这是一个好主意。