2016-03-08 55 views

回答

8

嘗試使用此:

main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/buttonPrompt" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Show Prompt Dialog" /> 

    <EditText 
     android:id="@+id/editTextResult" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

Custom.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout_root" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:padding="10dp" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Type Your Message : " 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <EditText 
     android:id="@+id/editTextDialogUserInput" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <requestFocus /> 
    </EditText> 
</LinearLayout> 

main.java

package cm.kikani.kalpesh; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 

public class MainActivity extends Activity { 

    final Context context = this; 
    private Button button; 
    private EditText result; 

    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // components from main.xml 
     button = (Button) findViewById(R.id.buttonPrompt); 
     result = (EditText) findViewById(R.id.editTextResult); 

     // add button listener 
     button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 

       // get prompts.xml view 
       LayoutInflater li = LayoutInflater.from(context); 
       View promptsView = li.inflate(R.layout.custom, null); 

       AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
         context); 

       // set prompts.xml to alertdialog builder 
       alertDialogBuilder.setView(promptsView); 

       final EditText userInput = (EditText) promptsView 
         .findViewById(R.id.editTextDialogUserInput); 

       // set dialog message 
       alertDialogBuilder 
        .setCancelable(false) 
        .setPositiveButton("OK", 
         new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog,int id) { 
         // get user input and set it to result 
         // edit text 
         result.setText(userInput.getText()); 
         } 
         }) 
        .setNegativeButton("Cancel", 
         new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog,int id) { 
         dialog.cancel(); 
         } 
         }); 

       // create alert dialog 
       AlertDialog alertDialog = alertDialogBuilder.create(); 

       // show it 
       alertDialog.show(); 

      } 
     }); 
    } 
} 
2

您可以爲您的案例創建自定義對話框類。

your_custom_dialog.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="120dp" 
    android:background="@android:color/black" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/txt_exit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_margin="10dp" 
     android:text="Do you realy want to exit ?" 
     android:textColor="@android:color/white" 
     android:textSize="16sp" 
     android:textStyle="bold"/> 


    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:background="@android:color/blue" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/btn_yes" 
      android:layout_width="100dp" 
      android:layout_height="30dp" 
      android:background="@android:color/white" 
      android:clickable="true" 
      android:text="Yes" 
      android:textColor="@android:color/white" 
      android:textStyle="bold" /> 

     <Button 
      android:id="@+id/btn_no" 
      android:layout_width="100dp" 
      android:layout_height="30dp" 
      android:layout_marginLeft="5dp" 
      android:background="@android:color/white" 
      android:clickable="true" 
      android:text="No" 
      android:textColor="@android:color/blue" 
      android:textStyle="bold" /> 
    </LinearLayout> 

</LinearLayout> 

,你CustomDialog類必須擴展對話框

public class CustomDialogClass extends Dialog { 

    public Activity activity; 
    public Dialog dialog; 
    public Button yes, no; 

    public CustomDialogClass(Activity a) { 
    super(a); 
    // TODO Auto-generated constructor stub 
    this.activity = a; 
    } 

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

    yes = (Button) findViewById(R.id.btn_yes); 
    no = (Button) findViewById(R.id.btn_no); 

    yes.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) 
    { 
      activity.finish(); 
     } 
    }); 

    no.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) 
    { 
      dismiss(); 
     } 
    }); 

    } 

} 

,你可以這樣調用

CustomDialogClass customDialog =new CustomDialogClass(activity); 
customDialog .show();