반응형
키보드 제어
에디트텍스트에 포커싱 하게 되면 아래에서 키보드가 올라온다 . 그랫을때 그 키보드를 제어하는 방법이 있다.
코드로 제어 하는 방법이 있고 , 매니패스트로 제어를 하는 방법이 있는데 , 코드로 작성하는 법 보다 매니패스트 설정이 더 간단하고 솔직히 키보드를 제어할 일이 많이 없을거 같아 코드만 넣어 놓고 설명은 생략 하겠다
public class MainActivity extends AppCompatActivity {
EditText editText;
InputMethodManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
Button button = findViewById(R.id.button);
manager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
editText.requestFocus();
// manager.showSoftInput(editText,InputMethodManager.SHOW_IMPLICIT);
//눌럿을떄 토글 처럼 키보드 올라왔다 내려갓다 하는것이다.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.requestFocus();
// InputMethodManager manager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
manager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}
});
}
}
이건 잘 몰라도 사실 무관하다
다음은 매니패스트로 사용하는 법이다
보통 위2줄중 하나 , 아래 2줄중 하나 사용함
빨간 부분만 추가해주면 되기떄문에 매니패스트 사용하는게 더 간편하다
다이얼로그 (★ 중요하당)
다이얼로그생성은 빌더 클래스로 생성
AlertDialog.Builder builder = new AlertDialog.Builder(this);
타이틀영역
setTitle : 타이틀문자열 지정
setIcon : 타이틀영역의 아이콘 지정
메세지 영역
setMessage : 본문을 단순 문자열로 구성
버튼영역
setPositiveButton : 3번 버튼 ( 보통 예 아니오 사용)
setNegativeButton :2번 버튼( 보통 예 아니오 사용)
setNeutralButton: 1번 버튼 ( 보통 자세히보기 등으로 사용 )
코드에 주석 참조 ~
public class MainActivity extends AppCompatActivity {
// 다이얼로그 실습
EditText edt_Name, edt_Email, dig_Email, dig_name;
int index;
@Override// 빽 버튼이 눌렸을 때 실행되는 메소드
public void onBackPressed() {
super.onBackPressed();
//제목영역 ,메시지영역, 버튼영역으로 구성됨
//Builder : 기본 대화상자 처리를 위한 기본구조를 생성
//원하는 정보를 사용자에게 알리고자 할 때 사용되는 기본적인 대화상자
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("종료 확인");
builder.setMessage("현재 프로그램을 종료하실랑가요~? ");
//다이얼로그 오른쪽 버튼 finish(); 로 프로그램 종료
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
//다이얼로그 왼쪽 버튼 취소 버튼은 따로 설정안해도 작동됨
builder.setNegativeButton("취소", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
//다이얼로그 네츄럴 버튼 자세히보기 등 설명할 사항이 있다면 추가하는 버튼이다.
builder.setNeutralButton("자세한 정보", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "옳옳 네츄럴 버튼", Toast.LENGTH_LONG).show();
}
});
//빌더를 보여줘라
builder.show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 새로운 레이아웃 만들어서 다이얼로그로 만들어보기
edt_Name = findViewById(R.id.editText);
edt_Email = findViewById(R.id.editText2);
Button button1 = findViewById(R.id.button);
Button button2 = findViewById(R.id.button2);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 1. 다일로그 레이아웃을 빌더에 바로 줄수 없어서 뷰로 인플레이션 하고 빌더에 셋 해쥼
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
// 2. 인플레이션 해줌
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.dialog, null);
//3. 빌더에 레이아웃 셋팅해줌
builder.setView(layout);
builder.setTitle("사용자 정보 입력 ");
builder.setIcon(R.drawable.ic_menu_allfriends);
dig_name = layout.findViewById(R.id.editText3);
dig_Email = layout.findViewById(R.id.editText4);
dig_name.setText(edt_Name.getText().toString());
dig_Email.setText(edt_Email.getText().toString());
//다이얼로그 오른쪽 버튼
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
edt_Email.setText(dig_Email.getText().toString());
edt_Name.setText(dig_name.getText().toString());
}
});
//다이얼로그 왼쪽 버튼
builder.setNegativeButton("취소", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "취소했습둥", Toast.LENGTH_LONG).show();
}
});
builder.show();
}
});
//두번째 버튼 체크박스 형태의 다이얼로그
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String[] singer = {"아옳옳족 총잽이", "아옳옳족 활잽이", "아옳옳족 칼잽이", "아옳옳족 주술사"};
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("원하는 아옳이는?");
ArrayList<String> item = new ArrayList<>();
// -1 아무것도 선택안함
/* 다이얼로그 라디오버튼 실습
builder.setSingleChoiceItems(singer, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
index = which;
}
});
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(index>=0){
Toast.makeText(getApplicationContext(),"좋아하는 아옳이는 " + singer[index] + "입니다", Toast.LENGTH_LONG).show();
}
}
});*/
builder.setMultiChoiceItems(singer, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
String value = singer[which];
if (isChecked) {
item.add(value);
} else {
item.remove(value);
}
}
});
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String msg = "";
for (int i = 0; i < item.size(); i++) {
msg += "\n" + item.get(i);
}
Toast.makeText(getApplicationContext(), "좋아하는 아옳이는 : " + msg, Toast.LENGTH_LONG).show();
}
});
builder.show();
}
});
}
}
반응형
'아옳옳의 코딩공부 > 아옳옳의 안드로이드스튜디오' 카테고리의 다른 글
2021-03-31안드로이드 스튜디오(브로드캐스트 와 서비스이용 예제2) (0) | 2021.03.31 |
---|---|
2021-03-29안드로이드 스튜디오(메뉴, 브로드캐스트 와 서비스이용 예제) (0) | 2021.03.30 |
2021-03-26안드로이드 스튜디오(알림설정[Notification]) (0) | 2021.03.26 |
2021-03-25안드로이드 스튜디오(브로드캐스트3 , 위험 권한) (0) | 2021.03.25 |
2021-03-24안드로이드 스튜디오(브로드캐스트2, 위험권한) (0) | 2021.03.24 |