2015-04-13 1 views
2

У меня есть макет деятельности в ниже формеAndroid - Предотвратить клавиатура от смещать при прокрутке

<relativelayout 
<scrollview 
<linearlayout 
    <EditText1 
    <EditText2 
    <EditText3 

</linearlayout> 
</scrollview> 
</relativelayout> 

всякий раз, когда я нажмите на любой редактирования текста появляется виртуальная клавиатура мне нужно достичь ниже Tings

  1. клавиатура должна исчезнуть при нажатии за пределами текста редактирования (работает нормально, поскольку я отклоняю клавиатуру в dispatchTouchEvent() метод).

  2. Клавиатура не должна DISAPPEAR, когда пользователь прокручивает. (В настоящее время исчезает)

Просьба сообщить об этом.

Edit -1 Код добавлен, который освобождает ke`

@Override 
public boolean dispatchTouchEvent(MotionEvent event) 
{ 
    View view = getCurrentFocus(); 
    boolean ret = super.dispatchTouchEvent(event); 

    if (view instanceof EditText) 
    { 
     View w = getCurrentFocus(); 
     int scrcoords[] = new int[2]; 
     w.getLocationOnScreen(scrcoords); 
     float x = event.getRawX() + w.getLeft() - scrcoords[0]; 
     float y = event.getRawY() + w.getTop() - scrcoords[1]; 

     if (event.getAction() == MotionEvent.ACTION_UP && (x < w.getLeft() || x >= w.getRight() || y < w.getTop() || y > w.getBottom())) 
     { 
      InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(getWindow().getCurrentFocus().getWindowToken(), 0); 
     } 
    } 
    return ret; 
}` 
+0

Добавить свой код – VicJordan

ответ

0

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

EditText txtEdit = (EditText) findViewById(R.id.edittxt); 

txtEdit.setOnFocusChangeListener(new OnFocusChangeListener() {   

     public void onFocusChange(View v, boolean hasFocus) { 
      if (!hasFocus) { 
       // code to execute when EditText loses focus 
      } 
     } 
    }); 
+0

Да. Попробуй. но что делать, если пользователь прокрутил представление, коснувшись области вне Редактирования текстов. Я не хочу, чтобы клавиатура убиралась, когда пользователь прокручивается. – Vishal

0

Перед тем как решить эту проблему, почему бы вам не понять, как работают представления, когда к ним подключены слушатели.

Обертывание голову вокруг всего распространения сенсорных событий (в том числе жеста) является обязательным еще при кодировании вы оказываетесь озадачены поведением различных ViewGroups (или просмотров) при креплении сенсорных слушателей к ним с надеюсь, что ваш код работает так, как ожидалось, когда они на самом деле этого не сделают.

This статья не только поможет вам с этим вопросом, но и во всех ваших будущих начинаниях с мнениями и слушателями.

Как-то, возможно, вы можете ответить на свой вопрос.

Смежные вопросы