我已經看遍了所有的地方,這個網站上有很多類似的問題,但我還沒有找到一個可行的,我想知道我做錯了什麼。我有一個EditText,我必須以編程方式添加它,它通常只有一行文本,但如果文本長度超過視圖寬度,我需要它來包裝。android 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屬性仍然WASN沒有工作。 (我想也許拉伸列搞亂了寬度,它不能計算何時包裝)
這裏是代碼,得到循環遍歷我添加到表中的每一行,p是EditText我不能正常工作。只是一點解釋,行包含一個數字的EditText(這一個很好,我不希望它多行),然後兩個Button和一個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
據推測setHorizontallyScrolling(false)將允許包裝,但添加,只是使事情變得更糟。不僅文本不能打包,而且應該包裝的文本不可見,因爲edittext僅顯示文本的第一部分(不滾動)。我仍然可以按回車,並按預期創建一個新行,但我無法獲取任何文本。
當我添加android:shrinkColumns時,問題得到解決 – Plugie