2017-06-29 96 views
0

設置EditText字段的最大長度和最小長度,當用戶鍵入並通知用戶時(如紅色的EditText行或小型彈出窗口不會打字輸入),EditText字段會檢查其長度。我不知道這個編碼應該在xml或java文件上。如何設置EditText字段的最大和最小字符?

採取例如用戶名: xml文件

<EditText 
    android:id="@+id/etusername" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:hint="Username" 
    android:inputType="textPersonName" 
    android:maxLength="25"  
    android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"/> 

java文件

EditText etUsername=(EditText) findViewById(R.id.etusername); 
String username=etUsername.getText().toString(); 
btnRegister.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //any operation here 
     } 
+0

已經回答[這裏](https://stackoverflow.com/questions/14454093/how-to-set-minimum-and-maximum-characters-limitation-to-edittext-in-android) – Adithya

+0

@Adithya我應該這樣編碼爲每個EditText字段分開 –

+0

創建一個篩選器並將其應用於您需要的篩選器。 – Adithya

回答

2

因爲你可以做這樣的事情的最低要求:

使用.getText().toString().length()選擇您的最小長度

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 
private EditText myEditText; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    myEditText = (EditText) findViewById(R.id.myEditText); 
    Button button = (Button) findViewById(R.id.button); 
    int lenght = 25; 
    myEditText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(lenght)}); 
    button.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    int i = v.getId(); 
    if (i == R.id.button) { 
     if (myEditText.getText().toString().length() < 4) { 
      myEditText.setError("4 char minimum!"); 
     } else { 
      myEditText.setError(null); 
     } 
    } 
} 

}

0

您需要使用TextWatcher觀看長度

etUsername.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) { 

     } 

     @Override 
     public void onTextChanged(final CharSequence s, final int start, final int before, final int count) { 

     } 

     @Override 
     public void afterTextChanged(final Editable s) { 
      if(s.toString.length > MAX){ 
       /// Your code here 
      } 
     } 
    }); 

這將使用戶可以繼續輸入字段,但可以讓您手動控制錯誤狀態。要知道,如果你手動調用

etUsername.setText("..."); 

它會再次觸發TextWatcher,並可能導致無限循環

+0

感謝您的幫助,但在您的代碼中showError()是什麼意思?它給我錯誤 –

+0

我可以在這裏而不是showError()? –

+0

你可以插入任何你需要的代碼,無論是顯示烤麪包,還是在EditText上設置錯誤狀態等。每次EditText的內容被改變時,都會調用該回調,無論是通過鍵入還是通過setText(..) – Shooky

相關問題