Цифровая программная клавиша появляется и мгновенно меняется на обычную клавиатуру - PullRequest
2 голосов
/ 25 ноября 2011

HI все, что я искал небольшую помощь с моей числовой softkeypad и EditText. У меня есть деятельность, в основном с таблицей из 2 столбцов, которая имеет 1 столбец, редактируемый через EditText. Я хочу, чтобы при нажатии на EditText отображалась цифровая клавиатура телефона. Он делает это, но почти мгновенно переключается на обычную клавиатуру. Иногда это переключается пару раз ?? Представление находится внутри пользовательского адаптера, который изменяет код из этого блога

Существует файл XML для действия, но он на самом деле не используется, они настроены программно. XML-файл содержит linearLayout, ListView и пустое текстовое представление и текст редактирования.

public class MethodEditor extends ListActivity {

private ArrayList<String[]> thismethod = new ArrayList<String[]>();


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
   super.onCreate(icicle);
   Bundle extras = getIntent().getExtras().getBundle("scanparam");
   ArrayList<String> param = new ArrayList<String>();//{
   param = extras.getStringArrayList("PARAM");
   ArrayList<String> value = new ArrayList<String>();
   value = extras.getStringArrayList("VALUE");
      for (int i = 0;  i < length; i++){      
       thismethod.add(new String[]{param.get(i), value.get(i)});
    }
   setContentView(R.layout.method_editor);
   MethodEditorAdapter editorAdapter = new MethodEditorAdapter(this, thismethod ); 
   setListAdapter( editorAdapter );
}

Теперь пользовательский адаптер

class MethodAdapterView extends LinearLayout {        
    public MethodAdapterView(Context context, 
            String[] strings ) {
        super( context );

       // this.setOrientation(HORIZONTAL);        
        LinearLayout.LayoutParams Params = 
            new LinearLayout.LayoutParams(100, LayoutParams.WRAP_CONTENT);
        Params.setMargins(1, 1, 1, 1);

        TextView paramname = new TextView( context );
        paramname.setInputType(InputType.TYPE_CLASS_PHONE);
        paramname.setText(strings[0]);
        paramname.setTextSize(20f);
        paramname.setTextColor(Color.WHITE);
        addView( paramname, Params);       

        LinearLayout.LayoutParams Value = 
            new LinearLayout.LayoutParams(150, LayoutParams.WRAP_CONTENT);
        Value.setMargins(1, 1, 1, 1);

        EditText paramvalue = new EditText(context);

        paramvalue.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL );
          paramvalue.setRawInputType(InputType.TYPE_CLASS_PHONE);
          paramvalue.setText(strings[1]);
        paramvalue.setTextSize(20f );
        paramvalue.setTextColor(Color.BLACK); 

        addView( paramvalue, Value); 

    }

}

public class MethodEditorAdapter extends BaseAdapter {

private Context context;
private ArrayList<String[]>  scanparam;

public MethodEditorAdapter(Context context, ArrayList<String[]> scanparam ) { 
    this.context = context;
    this.scanparam = scanparam;
}


public View getView(int position, View convertView, ViewGroup parent) { 
    return new MethodAdapterView(this.context, scanparam.get(position) );
}

}

Это должно быть просто, но я предполагаю, что что-то не так в пользовательском адаптере. Любые идеи кто-нибудь?

Я думаю, что это больше связано с настройками по умолчанию Querty клавиатуры моего телефона, которые портят его. Если я вручную изменю настройки телефона на клавиатуру телефона, то это сработает. Могу ли я сделать это автоматически?

...