2011-05-30 100 views
4

我开发某种聊天应用程序,一切都很好,但我坚持一个问题。 EditText滞后,我的android键盘在第二次或者在我在edittext中键入一些字母时被冻结。我不知道要提供什么代码,因为它只是一个简单的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循环,不看数组。我试图删除数组,并只有一个视图一个edittext一个按钮,并没有奏效。

+0

你有多个线程/或异步任务吗? – 2011-05-30 07:54:08

+0

我在我的应用程序中总共有6个线程 – artouiros 2011-05-30 07:55:35

+0

那么这可能是您的问题。看看你是否可以添加一些暂停到你的一些线程来提高性能。 – DKIT 2011-05-30 09:51:01

回答

1

所以看来你的线程可能会相互冲突。看看你的事件监听器,也许其中一个持有这个过程。前一段时间,我用GPS侦听器(onLocationChanged)解决了这个问题。

我从这个监听器发布数据到服务器,它只是杀了应用程序。将代码块移动到新线程后,它解决了我的问题。

+0

好像是这个问题。我需要从另一个线程访问我的GUI线程来绘制某些内容,但最终我将所有侦听器都推送到了主线程。 – artouiros 2011-05-31 16:42:15