У меня есть текст редактирования в приложении для Android, и я хочу, чтобы пользователь не вводил ввод, когда длина строки в байтах достигает предела. Он отлично работает на английском, но не на иврите.Android text text limit
Предел равен 256, поэтому, когда вход на иврите, я могу вставить только 128 символов. Проблема в том, что я вставляю ивритские буквы с пунктуацией. Допустим, что я вставляю точку, которая составляет 1 байт, она позволяет вводить более 128 символов, даже если символы являются только ивритскими буквами и пунктуацией.
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int length = s.toString().getBytes().length;
if (length == bytes_limit)
{
str = s.toString();
}
else if (length > bytes_limit)
{
input.setText(str);
input.setSelection(str.length());
}
}
Update:
Строка Пример: "שלום, מה שלומך"
Update 2:
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int length = s.toString().getBytes().length;
if (length <= bytes_limit)
{
str = s.toString();
}
else if (length > bytes_limit)
{
input.setText(str);
input.setSelection(str.length());
}
}
Почему вы не используете 'String.length()'? – Amirag
Я не совсем понимаю, что вы пытаетесь добиться. Вы хотите ограничить edittext до 128 символов? –
@amirag, потому что String.length() не подсчитывает байты, он подсчитывает символы. – Elior