Android EditText 상세 설명 및 예제 코드

EditText API 에서 의 구조
  java.lang.Object
  android.view.View
  android.widget.TextView
  android.widget.EditText
이미 알 고 있 는 직접 하위 클래스:
  AutoCompleteTextView, ExtractEditText
알 고 있 는 간접 하위 클래스:
  MultiAutoCompleteTextView
EditText 는 TextView 의 직접 하위 클래스 이기 때문에 EditText 는 부모 류 TextView 의 일부 방법 을 계승 합 니 다.다음은 제 가 직접 쓴 데모 하나 로 에 디 트 뷰 의 사용법 을 자세히 설명해 드 리 겠 습 니 다.

1.간단 한 EditText 입력 상자
매우 간단 합 니 다.layot 레이아웃 에서 EditText 를 설정 하여 코드 에서 Button 을 감청 하 는 이 벤트 를 설정 하여 현재 EditView 에 입력 한 내용 을 가 져 오고 표시 합 니 다.

XML/HTML 코드

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:id="@+id/textviewll" 
  android:orientation="vertical" android:layout_width="fill_parent" 
  android:layout_height="fill_parent"> 
  <EditText 
   android:id="@+id/sample_edit_text0" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:text="   EditText   "/> 
  <Button 
   android:id="@+id/sample_button0" 
   android:layout_width="fill_parent" android:layout_height="wrap_content" 
   android:text="  "/> 
</LinearLayout> 
자바 코드

public class SampleActivity extends Activity { 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
  setContentView(R.layout.sample); 
  
  final EditText editText0 = (EditText)findViewById(R.id.sample_edit_text0); 
  
  Button button0 = (Button)findViewById(R.id.sample_button0); 
  
  button0.setOnClickListener(new OnClickListener() { 
  
    @Override 
    public void onClick(View arg0) { 
    String str = editText0.getText().toString(); 
    Toast.makeText(SampleActivity.this,str, Toast.LENGTH_LONG).show(); 
    } 
  }); 
  
  super.onCreate(savedInstanceState); 
  } 
} 
2.EditText 입력 상자 의 내용 제한

layot 에 정 보 를 설정 합 니 다.
  android:digits=”1234567890.+-*/%()”
입력 상자 에 자신 이 정의 한 문자열 만 입력 할 수 있 도록 제한 합 니 다.다른 문자열 을 입력 하면 표시 되 지 않 습 니 다.
  android:phoneNumber=”true”
입력 제한 상자 에 핸드폰 번호 만 입력 할 수 있 습 니 다.
  android:password=”true”
입력 상자 에 입력 한 모든 내용 을'*'기호 로 표시 하도록 제한 합 니 다.
android:hint="기본 텍스트"
내용 을 입력 하기 전에 입력 상자 에 기본적으로 표 시 된 텍스트
  android:textColorHint=”#FF0000″
텍스트 내용 색상 설정
  android:enabled=”false”
입력 상자 설정 편집 불가

3.편집 상자 에 그림 보이 기
지난 편 에 서 는 TextView 에 그림 을 추가 하 는 방법 에 대해 이야기 한 적 이 있 습 니 다.EditText 는 TextView 의 하위 클래스 이기 때문에 당연히 그림 을 추가 할 수 있 습 니 다.다만 EditText 에 그림 을 추가 하면 삭제 할 수 없습니다.그림 에서 보 듯 이 저 는 그림 옆 에 있 는 내용 을 편집 하여 글 을 쓸 수 있 습 니 다.

XML/HTML 코드

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:id="@+id/textviewll" 
  android:orientation="vertical" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  > 
  <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="     " 
       android:textColor="#FF0000" 
       android:drawableBottom="@drawable/jay" 
       android:layout_alignParentTop="true" 
       android:layout_centerHorizontal="true" 
       > 
   </EditText> 
  
   <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="     " 
       android:textColor="#FF0000" 
       android:drawableTop="@drawable/jay" 
       android:layout_alignParentBottom="true" 
       android:layout_centerHorizontal="true" 
       > 
   </EditText> 
   <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="     " 
       android:textColor="#FF0000" 
       android:drawableLeft="@drawable/jay" 
       android:layout_alignParentLeft="true" 
       android:layout_centerVertical="true" 
       > 
   </EditText> 
   <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="     " 
       android:textColor="#FF0000" 
       android:drawableRight="@drawable/jay" 
       android:layout_alignParentRight="true" 
       android:layout_centerVertical="true" 
       > 
   </EditText>  
  
</RelativeLayout > 
4.소프트 키보드 Enter 키 설정
그림 에서 보 듯 이 소프트 키보드 의 엔 터 버튼 스타일 을 수정 할 수 있 고 코드 에서 감청 버튼 으로 이 벤트 를 클릭 할 수 있 습 니 다.

자바 코드

package cn.m15.xys; 
  
import android.app.Activity; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.inputmethod.EditorInfo; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.widget.TextView.OnEditorActionListener; 
  
public class KeyBoardActivity extends Activity { 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
  setContentView(R.layout.keyboard); 
  
  EditText editText0 = (EditText)findViewById(R.id.txtTest0); 
  
  editText0.setOnEditorActionListener(new OnEditorActionListener() { 
  
    @Override 
    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { 
    if (arg1 == EditorInfo.IME_ACTION_GO) { 
      Toast.makeText(KeyBoardActivity.this, "      '  '  ", 
        Toast.LENGTH_SHORT).show(); 
    } 
    return false; 
    } 
  }); 
  EditText editText1 = (EditText)findViewById(R.id.txtTest1); 
  
  editText1.setOnEditorActionListener(new OnEditorActionListener() { 
  
    @Override 
    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { 
    if (arg1 == EditorInfo.IME_ACTION_SEARCH) { 
      Toast.makeText(KeyBoardActivity.this, "      '  '  ", 
        Toast.LENGTH_SHORT).show(); 
    } 
    return false; 
    } 
  }); 
  EditText editText2 = (EditText)findViewById(R.id.txtTest2); 
  
  editText2.setOnEditorActionListener(new OnEditorActionListener() { 
  
    @Override 
    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { 
    if (arg1 == EditorInfo.IME_ACTION_SEND) { 
      Toast.makeText(KeyBoardActivity.this, "      '  '  ", 
        Toast.LENGTH_SHORT).show(); 
    } 
    return false; 
    } 
  }); 
  EditText editText3 = (EditText)findViewById(R.id.txtTest3); 
  
  editText3.setOnEditorActionListener(new OnEditorActionListener() { 
  
    @Override 
    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { 
    if (arg1 == EditorInfo.IME_ACTION_NEXT) { 
      Toast.makeText(KeyBoardActivity.this, "      '   '  ", 
        Toast.LENGTH_SHORT).show(); 
    } 
    return false; 
    } 
  }); 
  EditText editText4 = (EditText)findViewById(R.id.txtTest4); 
  
  editText4.setOnEditorActionListener(new OnEditorActionListener() { 
  
    @Override 
    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { 
    if (arg1 == EditorInfo.IME_ACTION_DONE) { 
      Toast.makeText(KeyBoardActivity.this, "      '  '  ", 
        Toast.LENGTH_SHORT).show(); 
    } 
    return false; 
    } 
  }); 
  EditText editText5 = (EditText)findViewById(R.id.txtTest5); 
  
  editText5.setOnEditorActionListener(new OnEditorActionListener() { 
  
    @Override 
    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { 
    if (arg1 == EditorInfo.IME_ACTION_UNSPECIFIED) { 
      Toast.makeText(KeyBoardActivity.this, "      '   '  ", 
        Toast.LENGTH_SHORT).show(); 
    } 
    return false; 
    } 
  }); 
  super.onCreate(savedInstanceState); 
  } 
} 
소프트 키보드 클릭 이벤트 감청
XML/HTML 코드

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:id="@+id/textviewll" 
  android:orientation="vertical" android:layout_width="fill_parent" 
  android:layout_height="fill_parent"> 
  <EditText android:id="@+id/txtTest0" 
   android:imeOptions="actionGo" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:hint="    -  " 
   ></EditText> 
  <EditText android:id="@+id/txtTest1" 
   android:imeOptions="actionSearch" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:hint="    -  " 
   ></EditText> 
  <EditText android:id="@+id/txtTest2" 
   android:imeOptions="actionSend" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:hint="    -  " 
   ></EditText> 
  <EditText android:id="@+id/txtTest3" 
   android:imeOptions="actionNext" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:hint="    -   " 
   ></EditText> 
  <EditText android:id="@+id/txtTest4" 
   android:imeOptions="actionDone" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:hint="    -  " 
   ></EditText> 
  <EditText android:id="@+id/txtTest5" 
   android:imeOptions="actionUnspecified" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:hint="    -   " 
   ></EditText> 
  
</LinearLayout> 
5.소프트 키보드 의 버튼 이 벤트 를 감청
프로젝트 를 할 때 가끔 은 사용자 가 내용 을 입력 할 때 검 사 를 해 야 합 니 다.예 를 들 어 사용자 가 합 법 적 이지 않 은 내용 을 입력 하여 EditText 에 표시 하지 않 으 면 addTextChanged Listener 를 사용 하여 사용자 의 입력 상 태 를 감청 해 야 합 니 다.감청 에서 사용자 가 입력 한 내용 을 바 꾸 거나 입력 내용 이 합 법 적 이지 않다 는 것 을 알려 줄 수 있다.그림 에서 보 듯 이 제 입력 동작 은 정상 적 인 감청 을 받 을 수 있 습 니 다.사용자 가 입력 한 내용 의 정상 적 인 절차 인 beforetextChanged()  -》onTextChanged()  -》after TextChanged()다음 알림 화면 그리 기 가 화면 에 표시 되 기 때문에 이 세 가지 방법 에서 사용자 가 입력 한 내용 을 수정 하거나 사용자 가 입력 한 내용 을 캡 처 할 수 있 습 니 다.

자바 코드

package cn.m15.xys; 
  
import android.app.Activity; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.widget.EditText; 
import android.widget.TextView; 
  
public class MonitorKeyActivity extends Activity { 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
  setContentView(R.layout.monitorkey); 
  EditText editText = (EditText)findViewById(R.id.monitor_edit_text0); 
  final TextView textView0 = (TextView)findViewById(R.id.monitor_text0); 
  final TextView textView1 = (TextView)findViewById(R.id.monitor_text1); 
  final TextView textView2 = (TextView)findViewById(R.id.monitor_text2); 
  
  editText.addTextChangedListener(new TextWatcher() { 
  
    @Override 
    public void onTextChanged(CharSequence text, int start, int before, int count) { 
        //text               
    //start                  
    //before                   0 
    //count                    
    textView1.setText("       [ " + text.toString() + " ]      [ " + start + " ]      [ " + count+" ]"); 
  
    } 
  
    @Override 
    public void beforeTextChanged(CharSequence text, int start, int count,int after) { 
    //text               
    //start                  
    //count                    0 
    //after                      
    System.out.println(text.toString()); 
    textView0.setText("       [ " + text.toString() + " ]     [ " + start + " ]      [" + after + " ]"); 
    } 
  
    @Override 
    public void afterTextChanged(Editable edit) { 
    //edit                
    textView2.setText("          [" + edit.toString()+" ]         "); 
    } 
  }); 
  
  super.onCreate(savedInstanceState); 
  } 
} 
XML/HTML 코드

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:id="@+id/textviewll" 
  android:orientation="vertical" android:layout_width="fill_parent" 
  android:layout_height="fill_parent"> 
  <TextView 
   android:id="@+id/monitor_text0" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:textSize="18dip" 
   android:textColor="#FF0000"/> 
  <TextView 
   android:id="@+id/monitor_text1" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:textSize="18dip" 
   android:textColor="#FF0000" 
   /> 
  <TextView 
   android:id="@+id/monitor_text2" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:textSize="18dip" 
   android:textColor="#FF0000" 
   /> 
  <EditText 
   android:id="@+id/monitor_edit_text0" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:hint="            "/> 
</LinearLayout> 
        이 글 을 통 해 안 드 로 이 드 RditText 에 대한 지식 을 습득 할 수 있 기 를 바 랍 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기