问题
I have TableLayout, which contain number of products.Each row contain code, description qty , price, discount value, ..... Depends on the user enter quantity , discount value, discount quantity & some other values also will calculate.
when user click on the editText soft keyboard will come this one also ok, working fine
My problem is when user press numeric keys very slow to show in the EditText.
For example I have press 3 from keyboard, after 7 or 8 seconds only it show in that particular editText.How can I reduce this time line...
This is my product image:
Please Anybody suggest why this happening?
Code like this :
for (int i = initil; i <end; i++) {
.............
............
final EditText txtQty = new EditText(this);
txtQty.setHeight(1);
txtQty.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 42));
txtQty.setInputType(InputType.TYPE_CLASS_PHONE);
txtQty.setImeOptions(EditorInfo.IME_ACTION_DONE);
txtQty.setImeOptions(EditorInfo.IME_ACTION_NEXT);
txtQty.setSelectAllOnFocus(true);
txtQty.setTextSize(9);
txtQty.setHint("0.0");
// txtQty.setOnEditorActionListener(new DoneOnEditorActionListener());
// txtQty.setHighlightColor(R.color.green);
tr.addView(txtQty);
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(txtQty, InputMethodManager.SHOW_IMPLICIT);
mgr.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,InputMethodManager.HIDE_IMPLICIT_ONLY);
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(txtQty.getWindowToken(), 0);
txtQty.setOnEditorActionListener( new OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.i("KeyBoard" ,"Inside the Edit Text");
.............................
} });
回答1:
Check this code for Dynamic tablelayout :
main.xml :
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#C0C0C0">
<RelativeLayout
android:layout_width="fill_parent" android:paddingBottom="20dip"
android:layout_height="fill_parent"
android:background="#C0C0C0">
<TableLayout android:id="@+id/contact_table"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/contact_info_title"
android:layout_marginTop="10dp"
android:background="@drawable/bgwhite_selector">
</TableLayout>
</RelativeLayout>
</ScrollView>
To add Contents of TableLayout use this xml file :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lays"
android:layout_width="wrap_content" android:background="@color/white"
android:layout_height="wrap_content" android:orientation="vertical">
<TableRow android:background="@color/white" android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:text=">"
android:textSize="18dip" android:textStyle="bold" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/arrowText"/>
</TableRow>
</LinearLayout>
After you created sepearate rows for layouts add this in Java code :
contact_table = (TableLayout)findViewById(R.id.contact_table);
LayoutInflater inflater = getLayoutInflater();
for(int i = 0; i < contact_count ; i++) {
LinearLayout row = (LinearLayout)inflater.inflate(R.layout.table_row,contact_table, false);
TextView text = (TextView)row.findViewById(R.id.text);
text.setText(list_data.get(i).summary);
contact_table.addView(row);
}
for(int i=0;i<contact_table.getChildCount();i++){
final View row=contact_table.getChildAt(i);
row.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
// TODO Auto-generated method stub
row_id=contact_table.indexOfChild(row);
}
});
}
Second for is the loop getting the click of Dynamically created Table row , in that add the
msg_title_text.setOnEditorActionListener(new DoneOnEditorActionListener());
Corresponding Action listener :
class DoneOnEditorActionListener implements OnEditorActionListener {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
Log.v("*****************************", "Clicked");
return true;
}
return false;
}
}
来源:https://stackoverflow.com/questions/7683154/android-softkeyboard-enter-the-numeric-value-into-edittext-very-slow