文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-06-06 09:18

关注

之前一篇文章,介绍了如何定义从屏幕底部弹出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); 
  
 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); 
 // 设置弹出窗体的宽和高 
  
 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 多种简单的弹出框样式设置代码Android使用Dialog风格弹出框的Activityreact-native 封装选择弹出框示例(试用ios&android)Android中自定义PopupWindow实现弹出框并带有动画效果Android 仿微信朋友圈点赞和评论弹出框功能高仿IOS的Android弹出框Android仿微信进度弹出框的实现方法Android编程实现仿QQ发表说说,上传照片及弹出框效果【附demo源码下载】Android自定义弹出框dialog效果Android自定义底部弹出框ButtomDialog


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯