【问题标题】:Load Dialog and add Views at Runtime加载对话框并在运行时添加视图
【发布时间】:2014-11-10 17:17:24
【问题描述】:

我有一个 Theme = Theme.Dialog 的活动!

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

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!

我试图将循环放入一个线程中..类似于:

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

但即使我在线程上运行它,他也只会显示对话框,直到一切都完成......

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

希望你们明白我的意思。

更新:

这是 Activity 的样式..

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

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

android:theme="@style/dialog_style"

【问题讨论】:

    标签: android runtime dynamically-generated


    【解决方案1】:

    创建一个方法 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();
    
    }
    

    【讨论】:

    • 这会创建一个新的对话框还是显示我的具有主题 = 对话框的活动?因为我不想创建一个新的 Dialog...
    • 您是否将清单文件中的活动主题声明为对话框?
    • 当然,正如我之前所说,我添加了 Theme = Theme.Dialog。我已经更新了我的问题并添加了 styles.xml 中的部分
    • 此活动将仅作为对话框打开,创建一个将成为对话框的布局,同样会这样做。
    • 是的,我希望这个活动只作为对话框打开。但我想在他添加所有按钮之前打开对话框......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    相关资源
    最近更新 更多