Android实现可输入数据的弹出框

之前一篇文章,介绍了如何定义从屏幕底部弹出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有所帮助。

(0)

相关推荐

  • Android中解决EditText放到popupWindow中,原有复制、粘贴、全选、选择功能失效问题

    1.原来是将EditView放到了popupwindow,发现EditView原有的复制.粘贴.全选.选择功能失效了,所以便用DialogFragment代替了popupWindow 直接上代码 ①.先看布局文件 <?xml version="." encoding="utf-"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  • Android编程实现popupwindow弹出后屏幕背景变成半透明效果

    本文实例讲述了Android编程实现popupwindow弹出后屏幕背景变成半透明效果的方法.分享给大家供大家参考,具体如下: android中popupwindow弹出后,屏幕背景变成半透明这个效果很普通.实现的方法也很多.我使用的可能是最简单的一种,就是设置一下getWindows的透明度.不多说上代码 /** * 设置添加屏幕的背景透明度 * @param bgAlpha */ public void backgroundAlpha(float bgAlpha) { WindowManag

  • Android中自定义PopupWindow实现弹出框并带有动画效果

    使用PopupWindow来实现弹出框,并且带有动画效果 首先自定义PopupWindow public class LostPopupWindow extends PopupWindow { public Lost lost; public void onLost(Lost lost){ this.lost = lost; } private View conentView; public View getConentView() { return conentView; } public L

  • Android Popwindow弹出框的模板使用示例

    Pop弹出框 public class ProductSortPop { private Context mContext; private View.OnClickListener mOnClickListener; //创建一个点击事件接口回调数据 private TextView mAllSort; private TextView mNewSort; private TextView mCommentSort; private View mLeftV; private PopupWind

  • Android PopupWindow 点击外面取消实现代码

    private void showPopupView() { if (mPopupWindow == null) { View view = getLayoutInflater().inflate(R.layout.newest_layout, null); mPopupWindow = new PopupWindow(view, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); mPopupWindow.setFocusable(tr

  • Android使用Dialog风格弹出框的Activity

    在Android中经常会遇到需要使用Dialog风格弹出框的activity,首先我们可能会首先想到的是在XML布局文件中设置android:layout_height="wrap_content"属性,让activity的高度自适应,显然这还不行,我们还需要为其DialogActivity设置自定义一个样式 <style name="dialogstyle"> <!--设置dialog的背景--> <item name="a

  • android PopupWindow 和 Activity弹出窗口实现方式

    本人小菜一个.目前只见过两种弹出框的实现方式,第一种是最常见的PopupWindow,第二种也就是Activity的方式是前几天才见识过.感觉很霸气哦.没想到,activity也可以做伪窗口. 先贴上最常见的方法,主要讲activity的方法. 一.弹出PopupWindow 复制代码 代码如下: /** * 弹出menu菜单 */ public void menu_press(){ if(!menu_display){ //获取LayoutInflater实例 inflater = (Layo

  • android使用PopupWindow实现页面点击顶部弹出下拉菜单

    实现此功能没有太多的技术难点,主要通过PopupWindow方法,同时更进一步加深了PopupWindow的使用,实现点击弹出一个自定义的view,view里面可以自由设计,比较常用的可以放一个listview. demo中我只是一个点击展示,简单的使用了fade in out的动画效果,也没有精美的图片资源,看着也丑,不过这么短的时间,让你掌握一个很好用的技术,可以自己扩展,不很好么? 废话不说了,直接上代码: MainActivity.java public class MainActivi

  • Android 多种简单的弹出框样式设置代码

    简介 这是一个基于AlertDialog和Dialog这两个类封装的多种弹出框样式,其中提供各种简单样式的弹出框使用说明.同时也可自定义弹出框. 项目地址:http://www.github.com/jjdxmashl/jjdxm_dialogui 特性 1.使用链式开发代码简洁明了 2.所有的弹出框样式都在DialogUIUtils这个类中完成,方便查阅方法 3.可以自定义弹出框字体样式 4.简单的类似加载框的样式可以支持两种主题更改默认白色和灰色 截图 demo下载 demo apk下载 D

  • android popwindow实现左侧弹出菜单层及PopupWindow主要方法介绍

    PopupWindow可以实现浮层效果,主要方法有:可以自定义view,通过LayoutInflator方法:可以出现和退出时显示动画:可以指定显示位置等. 为了将PopupWindow的多个功能展现并力求用简单的代码实现,编写了一个点击按钮左侧弹出菜单的功能,实现出现和退出时显示动画效果并点击其他区域时弹出层自动消失,效果图如下: 源码: 1.PopwindowOnLeftActivity.java 复制代码 代码如下: package com.pop.main; import android

  • Android Animation实战之屏幕底部弹出PopupWindow

    Android动画的一个实战内容,从屏幕底部滑动弹出PopupWindow. 相信这种效果大家在很多APP上都遇到过,比如需要拍照或者从SD卡选择图片,再比如需要分享某些东西时,大多会采用这么一种效果: 那这种效果如何实现呢? 我们仿写一个这种效果的实例吧: 1)我们首先定义一下,弹出窗口的页面布局组件:take_photo_pop.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout

随机推荐

其他