加载对话框并在运行时添加视图

时间:2014-11-10 17:17:24

标签: android runtime dynamically-generated

我有一个Theme = Theme.Dialog!

的活动

在onCreate()方法中,我以编程方式创建一个视图并将其添加到布局中,该布局由一个具有id:myLayout的RelativeLayout组成!类似的东西:

onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myCustomizedLayout);
RelativeLayout myLayout = (RelativeLayout) findViewById(R.id.myLayout);

Button mybutton = new Button(this);
//set RelativeLayout.LayoutParams here
myLayout.add(mybutton, my RelativeLayout.LayoutParams);
}

我提到当我添加一个但不是50个按钮时,他没有在屏幕上显示对话框,直到所有50个按钮都被创建并添加到myLayout ...

我不明白这一点,因为我在开始循环之前设置了contentView!

我试图将Loop放入一个Thread..somelike:

runOnUiThread(new Runnable(){
    for(i=0; i<50; i++){
        Button myButton = new Button(this);
        //add LayoutParameters her
        myLayout.add(myButton, LayoutParameters);
    }
});

但是,即使我在线程上运行它,他只会显示对话框直到所有内容都完成...

我的问题是:如何尽快查看屏幕上的对话框,并在运行时动态地将视图添加到Dialog中。

我希望你们明白我的意思。

更新

这是活动的风格..

<style name="dialog_style" parent="@android:style/Theme.Dialog">
    <item name="android:windowNoTitle">true</item>
</style>

并在Manifest文件中,我将此样式添加到活动:

android:theme="@style/dialog_style"

1 个答案:

答案 0 :(得分:0)

创建一个方法createDialog()并在mainactivity.java oncreate方法中调用它

private void createDialog(){

AlertDialog.Builder dialog = new AlertDialog.Builder(
                MainActivity.this);
        dialog.setTitle("APP NAME");
        dialog.setMessage("Do you want to quit?");
        dialog.setIcon(R.drawable.ic_launcher);
        dialog.setPositiveButton("NO",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {

                        dialog.cancel();
                    }
                });

        dialog.setNegativeButton("YES",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        finish();
                        dialog.cancel();
                    }
                });
        dialog.show();

}