问题描述
|
我正在开发某种聊天应用程序,一切顺利,但是我遇到了一个问题。
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);
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,padding_in_px2,0);
linforbutton.get(x).addView(btninput.get(x));
我正在做一些意见,所以我有一个for循环,不要看数组。我试着删除数组,只使一个视图一个edittext一个按钮,但它不起作用。
解决方法
因此,似乎您的线程可能会相互冲突。环顾您的事件侦听器,也许其中一个拥有该过程。前一段时间,我的GPS监听器(onLocationChanged)遇到了这个问题。
我从该侦听器将数据发布到服务器,它只是杀死了应用程序。将代码块移到新线程后,它解决了我的问题。