0

我有一个在 TableLayout 中制作的 editText,我希望它有 5 行,但如果我按 Enter 键多次,它会在屏幕上展开 editText 框。我不知道如何让它停止。

LayoutParams bigedit = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); //width height
bigedit.weight=1;
bigedit.setMargins(10, 0, 0, 10);//Left Top Right Bottom

EditText testEdit1= new EditText(this);
testEdit1.setBackgroundResource(R.drawable.black_rect_border);
testEdit1.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
testEdit1.setLines(5);
testEdit1.setMaxLines(5);
testEdit1.setVerticalScrollBarEnabled(true);
testEdit1.setId(unusedid);
testEdit1.setSingleLine(false);
testEdit1.setGravity(Gravity.TOP|Gravity.LEFT);
unusedid++;
testEdit1.setTextSize(16);
testEdit1.setLayoutParams(bigedit);

row1.addView(testEdit1);
tl.addView(row1);

其中 tl 是活动中的 TableLayout。

4

3 回答 3

0

请参阅此问题的答案之一中提供的代码,这可能会对您有所帮助。

于 2013-10-08T20:12:55.070 回答
0

好吧,我让它工作(除了垂直滚动条),奇怪的是通过改变这些语句的顺序。

EditText testEdit1= new EditText(this);
testEdit1.setVerticalScrollBarEnabled(true);
testEdit1.setBackgroundResource(R.drawable.black_rect_border);
testEdit1.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);    
testEdit1.setLines(5);
testEdit1.setSingleLine(false);
testEdit1.setMaxLines(5);
testEdit1.setGravity(Gravity.TOP|Gravity.LEFT);
testEdit1.setId(unusedid);
unusedid++;
testEdit1.setTextSize(16);
testEdit1.setLayoutParams(bigedit);

显然 setinput 行仅在您将类设置为使用键入文本时才有效

testEdit1.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
于 2013-10-09T18:40:56.177 回答
0

只是猜测,但根据setSingleLine文档。-

setSingleLine(boolean singleLine) 如果为 true,则将此字段的属性(行、水平滚动、转换方法)设置为用于单行输入;如果为 false,则将这些恢复为默认条件。

这条线。-

testEdit1.setSingleLine(false);

可能会覆盖您的maxLines设置。只需尝试删除该行,无论如何都不需要它。

于 2013-10-08T20:25:23.287 回答