ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 안드로이드: xml파일 만들어서 사용하기 (대화상자, 토스트메시지 커스텀)
    안드로이드 스튜디오 2020. 9. 22. 16:26

    대화상자와 토스트 메시지의 xml파일을 직접 만들어서 커스텀 해보았다. 

     

    (기존과는 다른 대화상자 메시지)

     

     

    (기존과는 다른 토스트 메시지)

     

     

    layout 디렉토리에 다음과 같이 dialog.xml 과 toast.xml을 만들어 주었다. 

     

    <dialog1.xml>

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    
        <TextView
            android:paddingLeft="10dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="사용자 이름"
            />
        <EditText
            android:id="@+id/edit_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    
        <TextView
            android:paddingLeft="10dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="이메일"
            />
        <EditText
            android:id="@+id/edit_email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    
    
    
    
    </LinearLayout>

     

     

    <toast1.xml>

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
    
        android:background="@color/colorPrimary"
        android:orientation="vertical"
        xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        >
    
    
        <TextView
            android:textColor="#FFFFFF"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="text"
            android:textSize="25dp"
            android:id="@+id/toast_text"
            />
    
    
    
    
    </LinearLayout>

     

     

    <MainActivity.java>

    package org.techtown.prac02;
    
    import androidx.appcompat.app.AlertDialog;
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.app.Activity;
    import android.app.Dialog;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        Button btn;
        TextView user_name, user_email;
        EditText edit_name, edit_email;
        View toast, dialog;   // xml파일들을 사용하기 위해 View 인스턴스로 만들어준다.
        Toast tst;
        TextView toastText;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
            setTitle("사용자 정보 입력");
            btn = findViewById(R.id.btn);
            user_name   = findViewById(R.id.user_name);
            user_email = findViewById(R.id.user_email);
            user_email.setText("사용자 이름");
            user_name.setText("사용자 이메일");
    
    
    
    
            btn.setOnClickListener(new Button.OnClickListener() {
                @Override
                public void onClick(View view) {
                
                    toast = View.inflate(MainActivity.this, R.layout.toast1,null);
                    //내가 커스텀한 toast xml파일 사용을 위함
                    
                    tst = new Toast(MainActivity.this);
                    tst.setView(toast);
                    // Toast객체를 따로 선언해준 후, setView를 통해 연결시켜준다.
                    
                    toastText = toast.findViewById(R.id.toast_text);
                    //inflate한 toast의 findViewById()를 사용해주어야 한다.
    
    
    
    
                    dialog = View.inflate(MainActivity.this, R.layout.dialog1, null);
                    //대화상자 또한 마찬가지로 내가 내가 만든 xml파일을 inflate해준다.
                    
                    AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
                    dlg.setTitle("사용자 정보 입력");
                    dlg.setIcon(R.mipmap.ic_launcher);
                    dlg.setView(dialog);
                    // setView를 통해 연결시켜주기
    
    
                    dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            edit_email = dialog.findViewById(R.id.edit_email);
                            edit_name = dialog.findViewById(R.id.edit_name);
                            //주의할 부분, inflate한 dialog의 findViewById()를 사용해주어야 한다.
                            
                            
                            user_email.setText(edit_email.getText().toString());
                            user_name.setText(edit_name.getText().toString());
                            toastText.setText("확인되었습니다.");
                            tst.show();
                        }
                    });
                    dlg.setNegativeButton("취소", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            toastText.setText("취소되었습니다.");
                            tst.show();
                        }
                    });
                    dlg.show();
    
    
                }
            });
    
    
    
    
        }
    
    
    
    }
    

    (activity_main.xml은 중요하지 않아서 포스팅하지 않았다)

     

    xml파일을 통해 위젯을 커스텀 했을때 id를 찾는 부분에 좀 더 신경쓰자. 

     

    반응형

    댓글

Designed by Tistory.