服务器之家

服务器之家 > 正文

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

时间:2021-05-08 16:53     来源/作者:无缘公子

之前一篇文章,介绍了如何定义从屏幕底部弹出popupwindow即《android animation实战之屏幕底部弹出popupwindow》写完之后,突然想起之前写过自定义内容显示的弹出框,就随手写了两个实例,分享出来:

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

第一种实现方式:继承dialog
 1.1 线定义弹出框要显示的内容:create_user_dialog.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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 调用弹出框

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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 调用该弹框组件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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有所帮助。

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
返回顶部