В этом уроке я собираюсь описать, как создать Android Custom Dialg.
Android-диалог
Создать Android-проект AndroidDialog ; Файл -> Новый -> Android Project
Android-макет
activity_android_dialog.xml
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
android:layout_width = 'match_parent' android:layout_height = 'match_parent' > < Button android:id = '@+id/btn_launch' android:layout_width = 'wrap_content' android:layout_height = 'wrap_content' android:layout_alignParentTop = 'true' android:layout_centerHorizontal = 'true' android:layout_marginTop = '115dp' android:text = 'Launch Dialog' /> < TextView android:id = '@+id/textView1' android:layout_width = 'wrap_content' android:layout_height = 'wrap_content' android:layout_alignParentLeft = 'true' android:layout_alignParentTop = 'true' android:layout_marginLeft = '28dp' android:layout_marginTop = '54dp' android:text = '@string/app_desc' android:textAppearance = '?android:attr/textAppearanceLarge' /> </ RelativeLayout > |
Макет диалога
dialog_layout.xml
01
02
03
04
05
06
07
08
09
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
|
<? xml version = '1.0' encoding = 'utf-8' ?> android:layout_width = 'fill_parent' android:layout_height = 'fill_parent' android:orientation = 'vertical' android:padding = '10sp' > < EditText android:id = '@+id/txt_name' android:layout_width = 'fill_parent' android:layout_height = 'wrap_content' android:hint = '@string/dialog_uname' android:singleLine = 'true' > < requestFocus /> </ EditText > < EditText android:id = '@+id/password' android:layout_width = 'match_parent' android:layout_height = 'wrap_content' android:ems = '10' android:inputType = 'textPassword' > </ EditText > < RelativeLayout android:layout_width = 'match_parent' android:layout_height = 'wrap_content' > < Button android:id = '@+id/btn_login' android:layout_width = '120dp' android:layout_height = 'wrap_content' android:text = '@string/dialog_submit' /> < Button android:id = '@+id/btn_cancel' android:layout_width = '120dp' android:layout_height = 'wrap_content' android:layout_alignParentTop = 'true' android:layout_marginLeft = '10dp' android:layout_toRightOf = '@+id/btn_login' android:text = '@string/dialog_cancel' /> </ RelativeLayout > </ LinearLayout > |
AndroidDialog Активность
Переопределите методы onCreateDialog (int id) и onPrepareDialog (int id, Dialog dialog) и добавьте следующий код, который создаст ваш собственный Android Android Dialog.
01
02
03
04
05
06
07
08
09
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; public class AndroidDialog extends Activity { final private static int DIALOG_LOGIN = 1 ; @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_android_dialog); Button launch_button = (Button) findViewById(R.id.btn_launch); launch_button.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { showDialog(DIALOG_LOGIN); } }); } @Override protected Dialog onCreateDialog( int id) { AlertDialog dialogDetails = null ; switch (id) { case DIALOG_LOGIN: LayoutInflater inflater = LayoutInflater.from( this ); View dialogview = inflater.inflate(R.layout.dialog_layout, null ); AlertDialog.Builder dialogbuilder = new AlertDialog.Builder( this ); dialogbuilder.setTitle( 'Login' ); dialogbuilder.setView(dialogview); dialogDetails = dialogbuilder.create(); break ; } return dialogDetails; } @Override protected void onPrepareDialog( int id, Dialog dialog) { switch (id) { case DIALOG_LOGIN: final AlertDialog alertDialog = (AlertDialog) dialog; Button loginbutton = (Button) alertDialog .findViewById(R.id.btn_login); Button cancelbutton = (Button) alertDialog .findViewById(R.id.btn_cancel); final EditText userName = (EditText) alertDialog .findViewById(R.id.txt_name); final EditText password = (EditText) alertDialog .findViewById(R.id.password); loginbutton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { alertDialog.dismiss(); Toast.makeText( AndroidDialog. this , 'User Name : ' + userName.getText().toString() + ' Password : ' + password.getText().toString(), Toast.LENGTH_LONG).show(); } }); cancelbutton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { alertDialog.dismiss(); } }); break ; } } } |
Приятного кодирования и не забудьте поделиться!
Ссылка: Android Dialog — Android Custom Dialog от нашего партнера JCG Чатуры Вийесингхе в блоге поддержки Шри-Ланки на Java .