Android - Как определить, «щелкает» ли пользователь где-либо за пределами TextView? - PullRequest
1 голос
/ 09 февраля 2012

У меня есть TextView, который при прикосновении преобразуется в EditView.Тем не менее, я хочу, чтобы происходило обратное, когда пользователь касается где-либо за пределами EditView.Я пытался использовать setOnFocusChangeListener, но это работает только тогда, когда что-то еще привлекает внимание.Я знаю, что могу перехватить onTouch и проверить там, но есть ли более простой способ справиться с этим сценарием?

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Я тоже использовал это в своем проекте и решил это следующим образом:

я установил макет снаружи от EditText как «focusable = true» и «clickable = true», у EditText нет фона так это выглядит как TextView, при изменении фокуса я меняю цвет текста EditText, чтобы пользователь может видеть, что он / она может редактировать текст. затем макет снаружи имеет OnClickListener, по нажатию я скрываю программную клавиатуру и меняю цвет текста обратно на цвет TextView. Это все работает без переключения элементов. Если вы хотите, вы можете поместить оба элемента в FrameLayout, чтобы убедиться, что элементы имеют одинаковые позиции в макете, реализовать OnClickListener для TextView, в событии onClick вы затем переключаете видимость Objects.

возможно эта идея тебе поможет;)

0 голосов
/ 09 февраля 2012

Установить родительский элемент для TextView и отредактировать представление как фокусируемое.

Сделайте все макеты и представления кликабельными, и на каждом из них реализуйте onClickListener, напишите onClickListener как показано ниже:

private ClickListener implements OnClickListener
{
    public void onClick(View view)
    {
         if(v.getId()!=R.id.editView)
         {
              //Write your code here to replace views
         }
    }
}
...