Android實現可輸入資料的彈出框_Android

來源:互聯網
上載者:User

之前一篇文章,介紹了如何定義從螢幕底部彈出PopupWindow即《Android Animation實戰之螢幕底部彈出PopupWindow》,寫完之後,突然想起之前寫過自訂內容顯示的彈出框,就隨手寫了兩個執行個體,分享出來:

第一種實現方式:繼承Dialog
 1.1 線定義彈出框要顯示的內容:create_user_dialog.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:id="@+id/create_user_dialog_view"  android:layout_width="fill_parent"  android:layout_height="wrap_content"  android:background="@drawable/dialog_load_bg"  android:minWidth="200dp"  android:orientation="vertical"  android:padding="10dp"  android:paddingBottom="30dp"  android:paddingTop="30dp">   <EditText   android:id="@+id/text_name"   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:background="@drawable/edit_bg"   android:hint="姓名"   android:minHeight="45dp"   android:textSize="18sp" />   <EditText   android:id="@+id/text_mobile"   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:layout_marginTop="5dp"   android:background="@drawable/edit_bg"   android:hint="手機號"   android:minHeight="45dp"   android:textSize="18sp" />   <EditText   android:id="@+id/text_info"   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:layout_marginTop="5dp"   android:background="@drawable/edit_bg"   android:gravity="top|left"   android:hint="個性簽名"   android:minHeight="145dp"   android:textSize="18sp" />   <Button   android:id="@+id/btn_save_pop"   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:layout_marginTop="5dp"   android:text="儲存" />  </LinearLayout> 

 1.2 定義要彈出的Dialog

public class CreateUserDialog extends Dialog {   /**   * 內容物件 *   */  Activity context;   private Button btn_save;   public EditText text_name;   public EditText text_mobile;   public EditText text_info;    private View.OnClickListener mClickListener;   public CreateUserDialog(Activity context) {   super(context);   this.context = context;  }   public CreateUserDialog(Activity context, int theme, View.OnClickListener clickListener) {   super(context, theme);   this.context = context;   this.mClickListener = clickListener;  }   @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   // 指定布局   this.setContentView(R.layout.create_user_dialog);    text_name = (EditText) findViewById(R.id.text_name);   text_mobile = (EditText) findViewById(R.id.text_mobile);   text_info = (EditText) findViewById(R.id.text_info);    /*    * 擷取聖誕框的視窗對象及參數對象以修改對話方塊的布局設定, 可以直接調用getWindow(),表示獲得這個Activity的Window    * 對象,這樣這可以以同樣的方式改變這個Activity的屬性.    */   Window dialogWindow = this.getWindow();    WindowManager m = context.getWindowManager();   Display d = m.getDefaultDisplay(); // 擷取螢幕寬、高用   WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 擷取對話方塊當前的參數值   // p.height = (int) (d.getHeight() * 0.6); // 高度設定為螢幕的0.6   p.width = (int) (d.getWidth() * 0.8); // 寬度設定為螢幕的0.8   dialogWindow.setAttributes(p);    // 根據id在布局中找到控制項對象   btn_save = (Button) findViewById(R.id.btn_save);    // 為按鈕綁定點擊事件監聽器   btn_save.setOnClickListener(mClickListener);    this.setCancelable(true);  } } 

1.3 調用彈出框

public void showEditDialog(View view) {  createUserDialog = new CreateUserDialog(this,R.style.loading_dialog,onClickListener);  createUserDialog.show(); } private View.OnClickListener onClickListener = new View.OnClickListener() {   @Override   public void onClick(View v) {     switch (v.getId()) {     case R.id.btn_save:       String name = createUserDialog.text_name.getText().toString().trim();      String mobile = createUserDialog.text_mobile.getText().toString().trim();      String info = createUserDialog.text_info.getText().toString().trim();       System.out.println(name+"——"+mobile+"——"+info);      break;    }   }  }; 

第二種實現方式:繼承PopupWindow
2.1 定義彈出框布局檔案,和1.1定義的一致
2.2 定義要彈出的PopupWindow

public class CreateUserPopWin extends PopupWindow {   private Context mContext;   private View view;   private Button btn_save_pop;   public EditText text_name;   public EditText text_mobile;   public EditText text_info;    public CreateUserPopWin(Activity mContext, View.OnClickListener itemsOnClick) {    this.mContext = mContext;    this.view = LayoutInflater.from(mContext).inflate(R.layout.create_user_pop, null);    text_name = (EditText) view.findViewById(R.id.text_name);   text_mobile = (EditText) view.findViewById(R.id.text_mobile);   text_info = (EditText) view.findViewById(R.id.text_info);    btn_save_pop = (Button) view.findViewById(R.id.btn_save_pop);    // 設定按鈕監聽   btn_save_pop.setOnClickListener(itemsOnClick);    // 設定外部可點擊   this.setOutsideTouchable(true);     /* 設定快顯視窗特徵 */   // 設定視圖   this.setContentView(this.view);    // 設定彈出表單的寬和高    /*    * 擷取聖誕框的視窗對象及參數對象以修改對話方塊的布局設定, 可以直接調用getWindow(),表示獲得這個Activity的Window    * 對象,這樣這可以以同樣的方式改變這個Activity的屬性.    */   Window dialogWindow = mContext.getWindow();    WindowManager m = mContext.getWindowManager();   Display d = m.getDefaultDisplay(); // 擷取螢幕寬、高用   WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 擷取對話方塊當前的參數值    this.setHeight(RelativeLayout.LayoutParams.WRAP_CONTENT);   this.setWidth((int) (d.getWidth() * 0.8));    // 設定彈出表單可點擊   this.setFocusable(true);   } } 

2.3 調用該彈框組件

public void showEditPopWin(View view) {    createUserPopWin = new CreateUserPopWin(this,onClickListener);    createUserPopWin.showAtLocation(findViewById(R.id.main_view), Gravity.CENTER, 0, 0);  } private View.OnClickListener onClickListener = new View.OnClickListener() {   @Override   public void onClick(View v) {     switch (v.getId()) {     case R.id.btn_save_pop:       String name1 = createUserPopWin.text_name.getText().toString().trim();      String mobile1 = createUserPopWin.text_mobile.getText().toString().trim();      String info1 = createUserPopWin.text_info.getText().toString().trim();       System.out.println(name1+"——"+mobile1+"——"+info1);       createUserPopWin.dismiss();      break;    }   }  }; 

以上就是本文的全部內容,希望對大家的學習Android有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.