大家好,我正在寻找有关我的数字软键盘和 EditText 的一点帮助。我有一个基本上有 2 列的表的活动,其中有 1 列可通过 EditText 编辑。我希望在单击 EditText 时出现数字电话键盘。它确实这样做了,但它几乎立即切换到普通键盘。有时会切换几次??该视图位于自定义适配器中,该适配器是来自此博客的修改代码
活动有一个 xml 文件,但它并没有真正使用它们以编程方式设置。xml 文件包含一个linearLayout、ListView 和一个空白的textview 和edittext。
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) );
}
}
这应该是直截了当的东西,但我认为自定义适配器出了点问题。有什么想法吗?
我认为这更多地与我手机的默认键盘设置有关,它搞砸了。如果我手动将电话设置更改为电话键盘,那么它可以工作。我可以自动执行此操作吗?