2012-08-08 9 views
7

Ho un compito per modificare AlertDialog width e height per xml, voglio make che diventa style, quindi posso usarlo facilmente.E quello, ho bisogno di cambiare il pulsante di stile AlertDialog anche. Puoi dirmi un modo per ottenere il target.Thank si Molto grato. PS, è meglio raggiungere l'obiettivo del cambiamento xml.Android: come posso impostare la larghezza e l'altezza di AlertDialog e il pulsante dello stile AlertDialog?

+0

Si può avere qualcosa di simile http://stackoverflow.com/questions/1979369/ android-activity-as-a-dialog –

+0

@ userIsAMonkey, grazie mille, ho pensato di usare Activity come una finestra di dialogo, ma è il mio compito di usare la finestra di dialogo. perché ci sono molte finestre di attesa da mostrare.Vogliamo avere uno stile facile da mostrare.Grazie, ale. – oldfox3721

risposta

18

ci sono due metodi 1) programatically 2) utilizzando il layout xml

1)=======> 

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setView(layout); 
builder.setTitle("Title"); 
alertDialog = builder.create(); 
alertDialog.show(); 
alertDialog.getWindow().setLayout(600, 400); //Controlling width and height. 


         (or) 

alertDialog.show(); 
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 

lp.copyFrom(alertDialog.getWindow().getAttributes()); 
lp.width = 150; 
lp.height = 500; 
lp.x=-170; 
lp.y=100; 
alertDialog.getWindow().setAttributes(lp); 

Se si desidera per mostrare il layout da visualizzare come Alert dialog vedi this

2)========> 

choose.xml

<TextView 
    android:id="@+id/img" 
    android:layout_width="wrap_content" 
    android:text="@string/choose" 
    android:textSize="25dp" 
    android:textColor="#fff" 
    android:layout_height="50dp"/> 

<TableLayout android:id="@+id/table" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#fff" 
    android:orientation="vertical"> 

    <TableRow 
     android:id="@+id/tr1" 
     android:orientation="horizontal" 
     android:layout_margin="10dp"> 
     <ImageView 
      android:contentDescription="@string/phone" 
      android:src="@drawable/phone" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 
     <TextView 
      android:id="@+id/phnText" 
      android:layout_width="wrap_content" 
      android:text="@string/phone" 
      android:gravity="left|center_vertical" 
      android:layout_marginLeft="10dp" 
      android:textSize="25dp" 
      android:textColor="#000" 
      android:layout_height="50dp"/> 
    </TableRow> 
    <View 
      android:layout_width="fill_parent" 
      android:layout_height="1dip" 
      android:background="#FF000000" /> 

    <TableRow 
     android:id="@+id/tr2" 
     android:orientation="horizontal" 
     android:layout_margin="10dp"> 
     <ImageView 
      android:contentDescription="@string/sms" 
      android:src="@drawable/sms" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 
     <TextView 
      android:id="@+id/smsText" 
      android:layout_width="wrap_content" 
      android:text="@string/sms" 
      android:gravity="left|center_vertical" 
      android:layout_marginLeft="10dp" 
      android:textSize="25dp" 
      android:textColor="#000" 
      android:layout_height="50dp"/> 
    </TableRow> 

</TableLayout> 
</LinearLayout> 

visualizzazione questo come popup come di seguito come

private void showPopUp() 
{ 
    final AlertDialog.Builder helpBuilder = new AlertDialog.Builder(this); 
    helpBuilder.setTitle(""); 

    LayoutInflater inflater = getLayoutInflater(); 
    final View checkboxLayout = inflater.inflate(R.layout.choose, null); 
    helpBuilder.setView(checkboxLayout); 

    final AlertDialog helpDialog = helpBuilder.create(); 
    helpDialog.show(); 

    TableRow tablerowPhone = (TableRow)checkboxLayout.findViewById(R.id.tr1); 
    TableRow tablerowSms = (TableRow)checkboxLayout.findViewById(R.id.tr2); 

    tablerowPhone.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

      helpDialog.dismiss(); 

      Uri callUri = Uri.parse("tel:" + listview_array[4]); 
      Intent intent = new Intent(Intent.ACTION_CALL, callUri); 
      startActivity(intent); 
     } 
    }); 

    tablerowSms.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

      helpDialog.dismiss(); 

      Uri smsUri = Uri.parse("sms:" + listview_array[4]); 
      Intent intent = new Intent(Intent.ACTION_VIEW, smsUri); 
      startActivity(intent); 
     } 
    }); 
} 

chiamano questo showPopUp() metodo in cui si desidera. in modo che è possibile impostare altezza e larghezza per il layout in file xml

+0

Grazie mille. In questo modo può farlo, ma voglio farlo per file xml. Perché voglio configurare l'xml alla mia application.do hai un modo per farlo con il file xml? Grazie ancora e ancora. – oldfox3721

1

Prova questa, questo funziona per me,

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setView(layout); 
builder.setTitle("Title"); 
alertDialog = builder.create(); 
alertDialog.getWindow().setLayout(600, 400); //Controlling width and height. 
alertDialog.show(); 
Problemi correlati