-
안드로이드: 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를 찾는 부분에 좀 더 신경쓰자.
반응형'안드로이드 스튜디오' 카테고리의 다른 글
안드로이드: callOnClick 메소드 (클릭없이 이벤트 호출) (0) 2020.10.09 안드로이드: 간단 그림판 만들기!(Canvas, Paint 클래스 사용하기) (0) 2020.09.23 안드로이드: 파일 입출력을 통해 간단한 일기장을 만들어보자! (0) 2020.09.22 안드로이드 스튜디오: 여러 버튼 하나로 처리하기 onClick method (0) 2020.09.10 안드로이드 스튜디오 Video 앨범 만들고 Video를 실행해보자 (2) (0) 2020.05.23