2015-06-28 133 views
0

我想动态添加可变数量的按钮到对话框。所以,因为按钮的数量没有解决,我不能将它们添加到布局文件。动态添加按钮到对话框

这是我试了一下:

private void oeffne_dialog (String[] prediction_array) { 
    //GestureAnyWhere gestureAnyWhere = null; 
    // Activity activity = gestureAnyWhere.get_activity(); 

    // TODO: bessere Lösung finden, als das Flag setzen zu müssen. Falscher Context 
    Dialog dialog = new Dialog (getApplicationContext()); 
    dialog.getWindow().setType (WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
    Log.d ("dialog", "dialog " + dialog + "|" + HintergrundService.this /*+ "|" + activity*/); 
    dialog.setContentView (R.layout.multiple_predictions_layout); 

    dialog.setTitle ("Bitte die zu startende Anwendung auswählen"); 

    // Button button_id = (Button)dialog.findViewById (R.id.button_ID); 

    Button button; 

    for (int i = 0 ; i < prediction_array.length ; i++) { 

     /* 
     button_id = new Button (getApplicationContext()); 
     button_id.setText (prediction_array [i]); 
     */ 

     Log.d ("aufrufe", "aufrufe " + i + prediction_array[ i ]); 
     button = new Button (getApplicationContext()); 
     button.setText (prediction_array[ i ]); 
     button.setId (i); 

    } 


    dialog.show(); 
} 

但有了这个代码没有按钮将出现在对话框中。

感谢您的帮助。

+1

你忘了'的addChild(按钮)'来根视图 – Robust

回答

1

您只需要首先膨胀视图并从该视图中获取您想要添加子视图的ViewGroup。

Dialog dialog = new Dialog (MainActivity.this); 
dialog.getWindow().setType (WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
View view = getLayoutInflater().inflate(R.layout.empty_basket, null); 

dialog.setTitle ("Bitte die zu startende Anwendung auswählen"); 

Button button; 
LinearLayout ll = (LinearLayout) view.findViewById(R.id.ll); 

for (int i = 0 ; i < 10 ; i++) { 
    Log.d ("aufrufe", "aufrufe " + i); 
    button = new Button (MainActivity.this); 
    button.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
    button.setText (String.valueOf(i)); 
    button.setId (i); 
    ll.addView(button); 
} 

dialog.setContentView (view); 
dialog.show(); 

不要忘记添加的权限TYPE_SYSTEM_ALERT

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 
相关问题