我的问题是我无法保持EditText
输入不接受字母数字。这是在Android上,它适用于我正在开发的应用。我只希望它接受数字。
我即时创建EditText
。下面是创建它们的代码。这是整个Java文件的代码。
public class PartDetail extends Activity implements View.OnClickListener{
private final int NUM_COL = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.part_detail);
Bundle bundle = getIntent().getExtras();
String btnName = bundle.getString("btnNameStored");
String btnOrig = bundle.getString("btnOrig");
TextView textView = (TextView) findViewById(R.id.txtBtnPushed);
textView.setText(btnOrig);
BufferedReader reader;
InputStream is = null;
// Get the name of the part picked and then grab the dimensions that are needed for that
// part.
try {
is = getAssets().open(btnName);
reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();
int lineLength = (line.length());
//Used for debugging ---------------------------
//System.out.println(" -- Text on Button -- " + btnName + " -- Line Length -- " +
// lineLength);
// ------------------------------------
TableLayout table = (TableLayout) findViewById(R.id.tblLayoutContent);
while (line != null){
TableRow tblRow = new TableRow(this);
tblRow.setPadding(5, 30, 5, 5);
table.addView(tblRow);
line = line.toUpperCase();
// sets the max number of col to 2 and iterates through the number of lines.
// filling each cell with a Text Box with the name of each dimension of the part
// that was picked.
for (int col = 0; col < NUM_COL; col++) {
//This is the label of what measurement needs to be enter.
TextView lblName = new TextView(this);
// This is the number you enter for the measurement.
EditText txtPartMeasurement = new EditText(this);
// Set all the input attributes for the text boxes.
if (line == "QTY") {
txtPartMeasurement.setInputType(InputType.TYPE_CLASS_NUMBER);
}
else {
txtPartMeasurement.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
}
txtPartMeasurement.setTextSize(14);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
txtPartMeasurement.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_END);
}
txtPartMeasurement.setEnabled(true);
// Set all the input attributes for the labels of what needs to be entered.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
lblName.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
}
lblName.setBackgroundColor(getResources().getColor(R.color.colorPartMeasurements));
lblName.setFocusable(true);
lblName.setText(line);
lblName.setTextSize(14);
// Add the labels and text boxes to the grid.
tblRow.addView(lblName);
tblRow.addView(txtPartMeasurement);
// Get the next line in the file if there one.
line = reader.readLine();
}
};
}
catch (IOException e) {
//Used for debugging --------------------------------------------
//System.out.println("In the catch of the On Catch in PartDetail -- " + btnName);
// ----------------------------------------------------------
e.printStackTrace();
}
}
@Override
public void onClick(View v) {
}
}
请注意,我为TYPE_CLASS_NUMBER
设置了EditText
的{{1}}为QTY,否则我希望它为TYPE_NUMBER_FLAG_DECIMAL
。
但这似乎并没有起作用。我已经在我的模拟器和我的真实手机上试过了。不行。请让我知道我做错了什么。 感谢。
这是xml。请记住,我会动态创建大部分对象。
<?xml version="1.0" encoding="utf-8"?>
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Copyright (c) 2016. Unless otherwise noted, all my code is open source
-->
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent" >
<TextView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "New Text"
android:id = "@+id/txtBtnPushed"
android:textSize = "42sp"
android:layout_alignParentTop = "true"
android:layout_centerHorizontal = "true" />
<ImageView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:id = "@+id/imgPartPicked"
android:layout_below = "@+id/txtBtnPushed"
android:layout_centerHorizontal = "true"
android:src = "@mipmap/straight_tap"
android:minWidth = "150dp"
android:minHeight = "150dp" />
<ScrollView
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:layout_below = "@+id/imgPartPicked"
android:layout_alignParentLeft = "true"
android:layout_alignParentStart = "true">
<TableLayout
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:stretchColumns="*"
android:id = "@+id/tblLayoutContent">
</TableLayout >
</ScrollView >
</RelativeLayout >
答案 0 :(得分:2)
在您的xml属性或android:inputType="number"
android:inputType="numberDecimal"
android:inputType="number"
只接受int number,android:inputType="numberDecimal"
接受十进制数。
您可以参考this。
答案 1 :(得分:0)
好的,我找到了一个解决方案。这是我改变的部分。 我决定不将set输入包装在if语句中。现在它可以工作,但所有编辑文本都接受小数。我必须弄清楚如何将数量框限制为只有数字,但是现在我的工作必须要做。
txtPartMeasurement.setInputType(InputType.TYPE_CLASS_NUMBER |
InputType.TYPE_NUMBER_FLAG_DECIMAL);
// Set all the input attributes for the text boxes.
/** if (line == "QTY") {
txtPartMeasurement.setRawInputType(InputType.TYPE_CLASS_NUMBER |
InputType.TYPE_NUMBER_FLAG_DECIMAL);
}
else {
txtPartMeasurement.setRawInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
} */
txtPartMeasurement.setTextSize(14);