Android

Android (안드로이드) EditText 읽기전용 (readonly) 처리 하는 방법

EditText 위젯 사용시 읽기 전용으로 변경하기

xml 레이아웃에서 처리하는 방법 : 속성값 enabled를 false로 주시면 됩니다. 

<EditText
      android:id="@+id/myinfo_input_address"
      android:layout_width="match_parent"
      android:layout_height="@dimen/myinfo_modify_info_input_height"
      android:layout_marginTop="@dimen/myinfo_modify_address_default_margin_top"
      android:paddingLeft="@dimen/myinfo_modify_address_input_padding_left"
      android:inputType="textMultiLine"
      android:hint="@string/myinfo_input_address"
      android:lines="3"
      android:maxLines="3"
      android:textSize="@dimen/myinfo_menu_text"
      android:textColor="@color/color_08"
      android:enabled="false"
      android:background="@drawable/input_box_bg"/>

프로그램방식으로 처리하는 방법 : setEnabled()메소드를 사용하여 처리합니다.

EditText editWord = (EditText)findViewById(R.id.myinfo_input_address);
editWord.setEnabled(false); 

EditText 소프트키보드 엔터키 클릭 이벤트 핸들링

엔터키가 눌렸을때 소프트 키보드를 내린 후 사용자가 원하는 이벤트 처리를 하기 위해서는 setOnEditorACtionListener()를 초기화 후 onEditorAction()메소드를 오버라이드 처리해서 키보드의 완료버튼(엔터키) 클릭 여부를 확인할 수 있어요.  완료처리를 위해 actionId 인자값을 EditorInfo.IME_ACTION_DONE 변수와 비교하여 처리합니다. 또는 완료 버튼 대신 검색 버튼을 표기할 수 도 있습니다. setImeOptions()메소드를 사용하여 타입을 설정하세요.

editText.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
        editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                boolean handled = false;  // 키보드 내림
                if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE) {  //완료버튼 클릭 처리
                    
                    selectAllHistoryTask task = new selectAllHistoryTask();
                    searchContent = editText.getText().toString();
                     
                    task.execute(searchContent);

                } else if (actionId == EditorInfo.IME_ACTION_NEXT) { 
                    handled = true;  // 키보드 유지
                }

                return handled;
            }
        });

xml 레이아웃에서 처리시 imeOptions값으로 actionDone 를 지정하면 코드상에서 처리하는 EditorInfo.IME_ACTION_DONE 와 동일한 역할을 합니다.

<EditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:inputType="text"
android:layout_marginLeft="15dp"
android:textColorHint="@color/blue_grey_4"
android:hint="Search..."
android:imeOptions="actionDone"
android:textColor="@color/color_white"
android:maxLength="20"/>

Leave a Reply

error: Content is protected !!