我正在编写的应用程序必须向用户显示一个动态创建的EditText小部件表。
我目前的代码:
/**
* Create and display the table of EditTexts on the screen
* @param x Number of columns
* @param y Number of rows
*/
private void createTable(int x, int y) {
TableLayout table = (TableLayout) findViewById(R.id.TableLayout01);
etGrid = new EditText[y][x];
for (int i = 0; i < y; i++) {
TableRow row = new TableRow(this);
for (int j = 0; j < x; j++) {
EditText et = new EditText(this);
et.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL
| InputType.TYPE_NUMBER_FLAG_SIGNED);
et.setSingleLine();
et.setMinimumWidth(getWindowManager().getDefaultDisplay().getWidth()/x);
etGrid[i][j] = et;
row.addView(et);
}
table.addView(row,new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
}
}
问题在于这一行,根本不起作用:
et.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL
| InputType.TYPE_NUMBER_FLAG_SIGNED);
在我的Kindle Fire上,我可以使用InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL
限制为十进制值,也可以使用InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED
进行签名,但不能使用带符号的十进制数。代码有什么问题?
答案 0 :(得分:8)
总是在其他选项InputType.TYPE_CLASS_NUMBER
之前InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL
非常重要,否则键盘不会是数字!
答案 1 :(得分:6)
试试这个:
et.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL);
修改强>
我尝试了这个,它对我有用。
请确保:
您必须从android:inputType
文件中的et
edittext 中删除此属性xml layout
。否则setRawInputType
更改将不会反映出来。
感谢。
答案 2 :(得分:0)
这确实是亚马逊Android中的一个错误。因为我正在为自己编写应用程序,所以有一个非常适合我的解决方法:
InputType.TYPE_CLASS_PHONE