Dialog 버튼 수정

Jang Seok Woo·2021년 7월 2일
0

실무

목록 보기
20/136

Dialog의 입력값에 따른 버튼 활성화, 비활성화

그리고 그에 따른 CustomDialog이해와 적용

Theme 색상에 따른 버튼 색상 불일치 해결 등의 방법을 배우게 되었다.

먼저 Dialog 입력값에 따른 버튼 활성화와 비활성화는

위와 같이 기존 Custom_Dialog 중 버튼 비활성화 기능이 있는 함수를 이용해 불러왔으며,

//Dialog 호출 HideButtons 사용X
        DialogManager.getInstance().showDialog(context, childView, true);

확인 버튼에 clicklistener 사용해 클릭 이벤트와 preference 연동

//확인버튼 클릭리스너와 Preference 데이터 삽입
        btn_confirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d("case4", et_index.getText().toString());
                AppPreferenceManager.getInstance(context).setCustomScan(chkUse.isChecked());
                AppPreferenceManager.getInstance(context).setScanIndex(Integer.valueOf(et_index.getText().toString()));
                AppPreferenceManager.getInstance(context).setScanDivider(et_divider.getText().toString());
                success.onClick(null);
                DialogManager.getInstance().allDismiss();
            }
        });

success.onClick(null); 을 이용해 액티비티에 변경된 값을 새로 불러와 주고
allDismiss로 사라지게 만들었다.

아래는 적당한 입력값이 들어오지 않으면 확인 버튼을 비활성화 시켜주는 코드이다.
TextWatcher를 사용하였다.

//취소버튼 클릭 리스너
btn_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DialogManager.getInstance().allDismiss();
}
});

        //텍스트워처 index 입력값 확인 후 확인 버튼 활성화 및 비활성화
        et_index.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                if (chkUse.isChecked() && (TextUtils.isEmpty(et_index.getText().toString()) || (TextUtils.isEmpty(et_divider.getText().toString())))) {
                    btn_confirm.setEnabled(false);
                } else if (!chkUse.isChecked()) {
                    btn_confirm.setEnabled(true);
                } else {
                    btn_confirm.setEnabled(true);
                }
            }

            @Override
            public void afterTextChanged(Editable editable) {
            }
        });

확인 버튼이 비활성화된다.

setEnabled 함수를 사용했다.

버튼의 여백은 margin이 문제였는데 좀 더 잘 찾아볼것. 눈에 잘 안들어온다.

버튼의 색상 부분은 기존의 버튼 색상을 그대로 쓰려고 하니 Theme 색상으로 인해 색상코드가 같아도 다른 색으로 나타나 골머리를 썩다가,

<androidx.appcompat.widget.AppCompatButton 으로 버튼을 선언해 기존에 사용했던 커스텀 셀렉터와 색상을 적용하니 똑같이 나오게 되었다.

profile
https://github.com/jsw4215

0개의 댓글