- 사용자에게 문자열 데이터를 입력 받을 때 사용하는 View
주요 속성
- text : Edit Text에 표시할 문자열 설정
- hint : 입력된 값이 없을 경우 표시할 안내 문구
- inputType : 입력 값에 대해 설정. 표시되는 형식, 나타나는 키보드 등에 영향을 줌

--> 키보드의 형식만 바꿀 뿐이지 입력까지 제한을 두는 것은 아니기 때문에 Number로 설정 하더라도 사용자가 텍스트를 복사/붙여넣기하면 입력이 가능, 코드를 통해 입력하는것도 입력이 가능하기 때문에 유효성검사기 필요함
- imeOptions : 나타나는 키보드의 Enter 키 모양 설정


--> actionSearch 를 선택하는 경우 엔터창이 돋보기 모양으로 바뀌지만 실제로 검색 기능이 구현되어 있는 것은 아니기 때문에 별도로 구현 해 줘야함
- 포커스를 주려면 Ed Text 안에 <request-focus/> 넣어주면 됨 --> 포커스가 문자열을 입력 해 주세요 보다 앞에 있음
<EditText
android:id="@+id/editTextText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="문자열을 입력 해 주세요"
android:imeOptions="actionSearch"
android:inputType="text">
<requestFocus/>
</EditText>
혹은 코드에서 포커스 부여 --> 포커스가 문자열을 입력 해 주세요 보다 뒤에 있음 (화면 로드 후 포커스를 줘서) (추천)
activityMainBinding.editTextText.requestFocus();
키보드 올리기
//키보드 올리기
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.showSoftInput(getCurrentFocus(), 0);
코드 단에서 키보드 올리기를 주면, Oncreate 메서드가 끝나기 전에 키보드가 나타나라고 명령을 주기 때문에, 키보드는 올라가려고하지만
그 이후에 화면이 새롭게 떴기 때문에 키보드가 나타나지 않음 --> 쓰레드 사용하면 해결 가능
package kr.co.edittext;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.inputmethod.InputMethodManager;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import kr.co.edittext.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
ActivityMainBinding activityMainBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityMainBinding = ActivityMainBinding.inflate(getLayoutInflater());
activityMainBinding.editTextText.requestFocus();
ShowKeyBoardThread thread = new ShowKeyBoardThread();
thread.start();
setContentView(activityMainBinding.getRoot());
}
class ShowKeyBoardThread extends Thread {
@Override
public void run() {
super.run();
SystemClock.sleep(500); //500Ms 쉬었다가 아래 코드 동작
//키보드 올리기
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.showSoftInput(getCurrentFocus(), 0);
}
}
public void hideKeyBoard() {
// InputMethodManager 에서 키보드를 관장할 수 있는 get을 추출할 수 있음
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
//getWindowToken 으로 아이바인더 객체를 추출
// 아이바인더 : 무언가를 연결 할 수 있는 요소
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
//포커스 해제
getCurrentFocus().clearFocus();
}
EditText의 이벤트
- textWatcher : 사용자가 입력한 내용을 실시간으로 감시
public class MainActivity extends AppCompatActivity {
ActivityMainBinding activityMainBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityMainBinding = ActivityMainBinding.inflate(getLayoutInflater());
//입력 감시자
EditTextWatcher1 editTextWatcher1 = new EditTextWatcher1();
activityMainBinding.editTextText.addTextChangedListener(editTextWatcher1);
...
//editText에 입력한 내용을 실시간으로 감시하는 왓처
class EditTextWatcher1 implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//입력 내용이 변하기 전
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//입력 내용이 변경 했을 때
}
@Override
public void afterTextChanged(Editable s) {
//입력 내용이 변경한 후
}
}
- EditorAction : 키보드 엔터키 눌렀을 때 발생하는 이벤트
public class MainActivity extends AppCompatActivity {
ActivityMainBinding activityMainBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityMainBinding = ActivityMainBinding.inflate(getLayoutInflater());
activityMainBinding.editTextText.requestFocus();
ShowKeyBoardThread thread = new ShowKeyBoardThread();
thread.start();
//입력 감시자
EditTextWatcher1 editTextWatcher1 = new EditTextWatcher1();
activityMainBinding.editTextText.addTextChangedListener(editTextWatcher1);
//엔터 리스너
EditTextEnterListener editTextEnterListener = new EditTextEnterListener();
activityMainBinding.editTextText.setOnEditorActionListener(editTextEnterListener);
setContentView(activityMainBinding.getRoot());
}
...
//엔터키 눌렀을 떄
class EditTextEnterListener implements TextView.OnEditorActionListener{
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
String str1 = activityMainBinding.editTextText.getText().toString();
activityMainBinding.editTextText.setText("엔터 누름");
hideKeyBoard();
return true;
}
}'안드로이드 스튜디오' 카테고리의 다른 글
| [Android] ImageView (1) | 2026.02.02 |
|---|---|
| [Android] TextInputLayout (0) | 2025.12.19 |
| [Android] Button (0) | 2025.11.15 |
| [Android] TextView (0) | 2025.11.15 |
| [Android] MainActivity로 돌아오기 실습 (1) | 2025.06.19 |