Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Очистка EditText 
V
    Опции темы
math64
Дата 12.7.2012, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 1
Всего: 72



Видел в одном приложении, EditText, в котором при вводе текста справа появляется красный крестик. При нажатии на него EditText очищается. Как это сделать?
PM   Вверх
Frees
Дата 12.7.2012, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: нет
Всего: 54



http://stackoverflow.com/questions/4281749...view-in-android
оно?

Это сообщение отредактировал(а) Frees - 12.7.2012, 10:03


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
math64
Дата 12.7.2012, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 1
Всего: 72



Ну как показать иконку справа - я и так знаю. Даже как найти её id по имени:
Код

int id = getResources().getIdentifier(drawableName,    "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(id);
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);

Как очистить текст тоже - сейчас сделано через меню:
Код

    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.menu_clear:
            editText.setText("");
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

Как отрабатывать нажатие на неё?
Приложение, где я видел такое - ColorDict
Вводишь слово - нажимаешь на поиск, получаешь перевод.
Перед вводом нового слова нажимешь на крестик.

PM   Вверх
Frees
Дата 12.7.2012, 12:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: нет
Всего: 54



Возможно мой ответ будет ответом дилетанта, но всеже...

Если слушать Touch у EditText и в обработке смотреть в каких координатах был тач?

Добавлено @ 12:44
http://stackoverflow.com/questions/3554377...hin-an-edittext

Это сообщение отредактировал(а) Frees - 12.7.2012, 12:44


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
math64
Дата 12.7.2012, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 1
Всего: 72



вот это как раз то что нужно!
Код

    public boolean onTouch(View view, MotionEvent motionEvent) {
        int action = motionEvent.getAction();
        if (action == MotionEvent.ACTION_DOWN) {
            if (view.getId() == R.id.editText) {
                Drawable drawable = editText.getCompoundDrawables()[2];
                final int fuzz = 10;
                if (drawable != null) {
                    int x = (int) motionEvent.getX();
                    int y = (int) motionEvent.getY();
                    Rect bounds = drawable.getBounds();
                    if (x >= (view.getRight() - bounds.width() - fuzz)
                            && x <= (view.getRight() - view.getPaddingRight() + fuzz)
                            && y >= (view.getPaddingTop() - fuzz)
                            && y <= (view.getHeight() - view.getPaddingBottom()) + fuzz) {
                        editText.setText("");
                        editText.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
                    }
                }
                return false;
            }
            // обработка нажатий других виджетов
        }
        return false;
    }

осталось одно - определить, что в editText что-то ввели.
Пробовал так:
Код

    public boolean onKey(View v, int keyCode, KeyEvent event) {
        int id = 0;
        if (editText.getText().length() > 0)
            id = R.drawable.clear;
        editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, id, 0);
        return false;
    }

но не получается.

Это сообщение отредактировал(а) math64 - 12.7.2012, 14:21
PM   Вверх
math64
Дата 12.7.2012, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 1
Всего: 72



Вот так:
Код

        editText.addTextChangedListener(this);

    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
    }

    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    public void afterTextChanged(Editable s) {
        int id = 0;
        if (editText.getText().length() > 0)
            id = R.drawable.clear;
        editText1.setCompoundDrawablesWithIntrinsicBounds(0, 0, id, 0);
    }

остальные слушатели добавляются setOn..., а этот add...
PM   Вверх
spyswamp
Дата 13.7.2012, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



Код

if (x >= (view.getRight() - bounds.width() - fuzz)
                            && x <= (view.getRight() - view.getPaddingRight() + fuzz)
                            && y >= (view.getPaddingTop() - fuzz)
                            && y <= (view.getHeight() - view.getPaddingBottom()) + fuzz) {


Ну зачем так извращенно-то, м? smile Хер отладишь в случае чего. Вот так будет и нагляднее, и круче для отладки:

Код

Rect r = new Rect(view.getRight() - bounds.width() - fuzz,
    view.getPaddingTop() - fuzz,
    view.getRight() - view.getPaddingRight() + fuzz,
    view.getHeight() - view.getPaddingBottom()) + fuzz);
if (r.contains(x, y))
{
    // do something
}



--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
math64
Дата 13.7.2012, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 1
Всего: 72



Цитата(spyswamp @  13.7.2012,  15:38 Найти цитируемый пост)
Ну зачем так извращенно-то, м? smile Хер отладишь в случае чего. Вот так будет и нагляднее, и круче для отладки:

просто приспособил код из ссылки для себя. Сниппеты выложен для тех,  у кого такой же вопрос, чтобы не ходить по ссылкам.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0857 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.