android EditText不会自动换行文本

时间:2013-10-03 19:57:06

标签: android android-edittext word-wrap

我到处都看了,这个网站上有很多类似的问题,但我找不到一个有用的,我想知道我做错了什么。我有一个EditText,我必须以编程方式添加,它通常只有一行文本,但如果文本长于视图的宽度,我需要它包装。

我使用的唯一xml是表格布局,编辑文本最终会添加到

<TableLayout
 android:id="@+id/LineItemLayout"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_marginBottom="25dp"
 android:stretchColumns="4"
 >

</TableLayout>

编辑文本是第4列中的文本,但即使我删除了stretchColumns属性,它仍然无效。 (我想也许是拉伸柱弄乱了宽度,无法计算何时换行)

以下是我添加到表中的每一行循环的代码,p是我无法正常工作的EditText。只是一些解释,该行包含一个数字的EditText(这一个很好,我不希望它多行),然后是两个按钮和一个TextView,然后最后一项是伸展其余宽度的EditText并应该包装文本。我把它们全部放在这里以防它们引起问题,因为此时我不知道下一步该尝试什么。

final TableRow l = new TableRow(EnvelopeModify.this);

TextView t = new TextView(EnvelopeModify.this);

t.setText("$" + lineItems.get(x).getTotal() + ", " + lineItems.get(x).getQuantity() + " " + lineItems.get(x).getItemUnits() + "");
t.setPadding(5, 5, 30, 5);

EditText p = new EditText(EnvelopeModify.this);
p.setText(lineItems.get(x).getProposalDesc());
p.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
p.setBackgroundResource(R.color.blueEditText);
p.setMinLines(1);
p.setHorizontallyScrolling(false);
p.setImeOptions(EditorInfo.IME_ACTION_DONE);
//TableLayout.LayoutParams tempParams = new TableLayout.LayoutParams(0,LayoutParams.WRAP_CONTENT,1f);
//p.setLayoutParams(tempParams);

EditText o = new EditText(EnvelopeModify.this);
o.setText(lineItems.get(x)._order);
o.setWidth(50);
o.setInputType(InputType.TYPE_CLASS_NUMBER);

Button d = new Button(EnvelopeModify.this);
d.setText("Remove");
Button e = new Button(EnvelopeModify.this);
e.setText("Edit");

l.addView(o);
l.addView(d);
l.addView(e);
l.addView(t);
l.addView(p);
lineItemLayouts.add(l); // this is the tableLayout in the xml above

据说setHorizo​​ntallyScrolling(false)将允许包装,但添加只是让事情变得更糟。文本不仅不会换行,而且应该换行的文本不可见,因为edittext只显示文本的第一部分(不滚动)。我仍然可以按Enter键并按预期创建一个新行,但我无法获取任何文本。

2 个答案:

答案 0 :(得分:3)

问题在于EditText所在的TableLayout。在EditText中,EditText位于可伸缩列中,将列设置为也是可收缩的,修复了问题。这是我对xml布局所做的更改。

<TableLayout
  android:id="@+id/LineItemLayout"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginBottom="25dp"
  android:stretchColumns="4"
  android:shrinkColumns="4"
  >

这就是我在编码方面最终为我工作的东西:

EditText p = new EditText(EnvelopeModify.this);
p.setText(lineItems.get(x).getProposalDesc());
p.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
p.setBackgroundResource(R.color.usedOnProposal);
p.setMinLines(1);

答案 1 :(得分:0)

您在此行中禁用水平滚动.-

p.setHorizontallyScrolling(false);

至于多线问题,你可以试试.-

p.setSingleLine(false);
p.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);