본문 바로가기
프로젝트 기록/android

[android/안드로이드] Login dialog 예제

by 새아SaeA 2020. 1. 8.

AlertDialog를 이용해서 로그인 폼 만들기 간단 예제

 

1. 참고사항

- logindialog를 만들기 위해서는 따로 login form을 위한 xml파일을 작성해야 한다.

- logindialog.xml에서 inputtype="numberpassword"를 설정했기에 password에는 숫자만 입력가능

 

2. 결과물

 

3. 해당 부분 코드 

 

※ 전체 코드가 궁금하다면 이전 포스팅을 참고해주세요.

[프로젝트 기록/android] - [android/안드로이드] Dialog list, radio, check box형태의 다이얼로그 예제

 

/res/layout/activity_main.xml

<Button
        android:id="@+id/loginBtn"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:text="Login Dialog"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/checkboxBtn"/>

/res/layout/logindialog.xml *다이얼로그에 보일 로그인 폼을 만듦.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:layout_width="90dp"
            android:layout_height="45dp"
            android:layout_marginStart="16dp"
            android:text="ID"
            android:textSize="20sp"
            android:gravity="center"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:layout_marginStart="16dp"
            android:text="Password"
            android:textSize="20sp"
            android:gravity="center"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <EditText
            android:id="@+id/id"
            android:layout_width="150dp"
            android:layout_height="45dp"
            android:layout_marginStart="8dp"
            android:hint="id"/>

        <EditText
            android:id="@+id/pw"
            android:layout_width="150dp"
            android:layout_height="45dp"
            android:layout_marginStart="8dp"
            android:hint="password"
            android:inputType="numberPassword" />

    </LinearLayout>


</LinearLayout>

/java/com.example.dialog/MainActivity.java 

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button login = (Button)findViewById(R.id.loginBtn);
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showLoginDialog();
            }
        });
    }

    private void showLoginDialog() {
        LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        LinearLayout loginLayout = (LinearLayout) vi.inflate(R.layout.logindialog, null);

        final EditText id = (EditText)loginLayout.findViewById(R.id.id);
        final EditText pw = (EditText)loginLayout.findViewById(R.id.pw);

        new AlertDialog.Builder(this).setTitle("Login").setView(loginLayout).setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "ID : " + id.getText().toString() + "@nPW : " + pw.getText().toString(), Toast.LENGTH_SHORT).show();
            }
        }).show();
    }

※ 이전 다이얼로그처럼 코드를 작성해도 되고, 이렇게 다른 방식으로 작성해도 된다.