Статьи

Android Dialog — Android Custom Dialog

В этом уроке я собираюсь описать, как создать 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
<RelativeLayout xmlns:android='http://schemas.android.com/apk/res/android'
    xmlns:tools='http://schemas.android.com/tools'
    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'?>
<LinearLayout xmlns:android='http://schemas.android.com/apk/res/android'
    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 .