Android

(커스텀 다이얼로그) 다이얼로그 안에 스피너와 EditText 넣기.

Machine_웅 2018. 5. 12. 12:38
728x90
반응형

준비

 

 

res / values

 

<?xml version="1.0" encoding="utf-8"?>
<resources>



<string-array name="location">
<item>---- 선택 ----</item>
<item>서울특별시</item>
<item>경기도</item>
<item>인천광역시</item>
<item>부산광역시</item>
<item>광주광역시</item>
<item>대전광역시</item>
<item>대구광역시</item>
<item>울산광역시</item>
<item>제주시</item>
</string-array>




</resources>

 

 

layout

 


<Spinner
android:id="@+id/spinner"
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textSize="15sp"
android:hint="테스트 입력"
android:id="@+id/editT"/>

 

MainActivity.java

 

Button gallId = (Button)findViewById(R.id.gallId);


gallId.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dial();
}
});

 

 

dial(); //여기서 다이얼로그를 불르고 설정합니다.

 

 


AlertDialog.Builder aBuilder = new AlertDialog.Builder(MainActivity.this);
View mView = getLayoutInflater().inflate(R.layout.report_dialog,null);

aBuilder.setTitle("커스텀 다이얼로그"); // 제목 설정
aBuilder.setMessage("커스텀 다이얼로그 연습."); // 내용 설정

// 스피너 설정
final Spinner sp = (Spinner)mView.findViewById(R.id.spinner);

// 스피너 어댑터 설정
ArrayAdapter yearAdapter = ArrayAdapter.createFromResource(this, R.array.location, android.R.layout.simple_spinner_item);
sp.setAdapter(yearAdapter);

// editText 설정
final EditText et = (EditText)findViewById(R.id.editT);

View mView = getLayoutInflater().inflate(R.layout.report_dialog,null);

LayoutInflater를 이용 하여,  위에서 만든 레이아웃을 넣어줍니다.   ( 레이아웃 명 , null);

 

 

ArrayAdapter yearAdapter = ArrayAdapter.createFromResource(this, R.array.location, android.R.layout.simple_spinner_item);
sp.setAdapter(yearAdapter);
(어댑터 세팅)

위에서 만든 location 정보를 넣습니다.

 

 



// 확인 버튼 설정
aBuilder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Text 값 받아서 로그 남기기
String value = et.getText().toString();

TextView test = (TextView)findViewById(R.id.test);
test.setText(value);
dialog.dismiss(); //닫기
}
});


// 취소 버튼 설정
aBuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss(); //닫기
}
});

 

다이얼로그 버튼 설정,  위에서 만든 스피너와 에디트 텍스트 값을 받아 처리할 로직을 만들어 넣습니다.

 

 

// 창 띄우기

aBuilder.setView(mView);
AlertDialog dialog = aBuilder.create();
dialog.show();

 

AlertDialog.Builder에  View를 설정하고,

 

다이얼로그를 만들어 보여줍니다.

 

끝.

 

728x90
반응형