在AlertDialog中自定义EditText

3

我有一个AlertDialog,里面有一个EditText,但我希望它只接受以下输入:
(0,1,2,3,4,5,6,7,8,9,.,,)

我该如何实现这个功能?

这是我的代码:

final AlertDialog.Builder alert = new AlertDialog.Builder(Treatment.this);
alert.setTitle("Weigthed Mean!");
alert.setIcon(R.drawable.droid);

Bundle b = getIntent().getExtras();
final TextView sum = (TextView) findViewById(R.id.fakeDB);
sum.setText(b.getCharSequence("input"));

final EditText x = new EditText (Treatment.this);
final EditText y = new EditText (Treatment.this);

x.setText(sum.getText().toString());
y.setHint("Enter the weights to the x values");

LinearLayout ll=new LinearLayout(Treatment.this);
ll.setOrientation(LinearLayout.VERTICAL);

ll.addView(x);
ll.addView(y);
alert.setView(ll);

alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {                
        alert.setOnCancelListener(null);
    }
});

alert.create();
alert.show();
3个回答

3

要以编程方式设置EditText类型,请尝试:

x.setInputType(InputType.TYPE_CLASS_NUMBER);

您可以使用带有标志的类来创建十进制,例如:
x.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);

但它不会添加 ',' 到其中,然而 @CodeMonkey 是正确的。
查看 输入类型 以获取有关标志和类别类型的更多信息。

2

@Osama在这方面走在了正确的道路上,你可以在这里了解更多有关更改键盘类型的信息。此外,您还可以通过设置KeyListener来指定您想要在EditText中显示哪些字符:

x.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
x.setKeyListener(DigitsKeyListener.getInstance("0123456789.,"));

或类似的内容。

0
final EditText x = new EditText (Treatment.this);
final EditText y = new EditText (Treatment.this);

x.setKeyListener(DigitsKeyListener.getInstance("0123456789.,"));
y.setKeyListener(DigitsKeyListener.getInstance("0123456789.,"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接