2015-11-11 4 views
4

В андроиде я хочу редактировать текст с ограничением в 255 байт, поэтому, когда пользователь попытается превысить этот предел, он не позволит ему писать.Android set max max limit в байтах

Все фильтры, которые я видел, используют ограничения символов, даже в макете xml.

Так как я могу установить фильтр в edittext, чтобы ограничить 255 байтов?

+0

Ну, вы можете просто рассчитать размер байта на пользовательском входе, но не имеет ли все символы одинакового размера байта в той же кодировке? – Nanoc

ответ

3

Одно из решений.

  • Используйте TextWatcher на EditText, чтобы получить строку напечатанного текста.
  • Используйте myString.getBytes(). Length; чтобы получить размер строки в байтах.
  • выполнить действие в EditText на основе порога, установленного в байтах.

    final int threshold = 255; 
    EditText editText = new EditText(getActivity()); 
    editText.addTextChangedListener(new 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) { 
         int i = s.toString().getBytes().length; 
         if(i < threshold){ 
          //Action needed 
         } 
        } 
    
        @Override 
        public void afterTextChanged(Editable s) { 
    
        } 
    }); 
    

Вам нужно будет применить этот пример к вашему собственному решению.

-1

Один Фрахтователь (символ) имеет 2 байта, если установить Android: MAXLENGTH = «128» в вашем EditText, вы получите лимит вы хотите

      <EditText 

           android:layout_width="match_parent" 
           android:layout_height="wrap_content" 
           android:ems="10" 
           android:inputType="textPersonName" 
           android:lines="1" 
           android:maxLength="128" 
           android:singleLine="true" 
           android:visibility="visible" /> 
+0

То есть в кодировке с кодировкой? – Nanoc

+0

Привет, я проверил с string.getBytes() длиной каждого символа, и я обнаружил, что на английском языке каждый символ представлен 1 байтом, но ивритские символы представлены 2 байтами. поэтому, если я установил максимальную длину до 128, пользователь мог бы ввести 64 буквы, но это не так, это позволяет ему вводить 128 символов, даже если он печатает на иврите – Elior

+0

@ Elior, спасибо, я получил узнайте что-нибудь здесь. –