Android EditText отставание при наборе текста - PullRequest
5 голосов
/ 30 мая 2011

Я разрабатываю какое-то приложение для чата, все идет хорошо, но я застрял с одной проблемой. EditText отстает, моя клавиатура Android зависает на секунду или несколько раз, когда я набираю какую-либо букву в тексте редактирования. На самом деле, я не знаю, какой код предоставить, потому что это просто поле EditText. Вот как я это делаю:

linforbutton.add(new LinearLayout(this));  //linear layout on the bottom os creen for edittext and button
    RelativeLayout.LayoutParams params =
      new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,
      LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    linforbutton.get(x).setLayoutParams(params);
    linforbutton.get(x).setBackgroundColor(0xff426193);
    linforbutton.get(x).setOrientation(LinearLayout.HORIZONTAL);
    int padding_in_dp1 = 3;  
    final float scale1 = getResources().getDisplayMetrics().density;
    int padding_in_px1 = (int) (padding_in_dp1 * scale1 + 0.5f);
    linforbutton.get(x).setPadding(0, 0, 0, 0); 
    relmsg.get(x).addView(linforbutton.get(x));
    msginput.add(new EditText(this));
    msginput.get(x).setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));
    msginput.get(x).setMaxLines(3);
    msginput.get(x).setMinLines(1);
    msginput.get(x).setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
    msginput.get(x).setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
    msginput.get(x).setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
    msginput.get(x).setImeOptions(EditorInfo.IME_ACTION_SEND);
    msginput.get(x).setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
    linforbutton.get(x).addView(msginput.get(x));
    btninput.add(new Button(this));
    btninput.get(x).setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    btninput.get(x).setText("Отпр.");
    int padding_in_dp2 = 20;  
    final float scale2 = getResources().getDisplayMetrics().density;
    int padding_in_px2 = (int) (padding_in_dp2 * scale2 + 0.5f);
    btninput.get(x).setPadding(padding_in_px2, 0, padding_in_px2, 0);
    linforbutton.get(x).addView(btninput.get(x)); 

Я делаю некоторые представления, поэтому у меня есть цикл for, не смотрите на массивы. Я попытался удалить массивы и сделать только один просмотр одним текстом редактирования одной кнопкой, и это не сработало.

1 Ответ

1 голос
/ 30 мая 2011

Так что кажется, что ваши темы могут конфликтовать друг с другом.Посмотрите вокруг ваших слушателей событий, возможно, один из них держит процесс.У меня была эта проблема некоторое время назад с моими слушателями GPS (onLocationChanged).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...