1

私はいたるところを見てきましたが、このサイトには似たような質問がたくさんありますが、機能するものは見つかりませんでした。何が間違っているのか疑問に思っています. プログラムで追加する必要がある EditText があります。通常、テキストは 1 行しかありませんが、テキストがビューの幅よりも長い場合は折り返す必要があります。

私が使用している唯一の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 が含まれています (これは問題ありません。複数行は必要ありません)。次に、2 つのボタンと 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) はラッピングを許可しますが、それを追加すると事態が悪化します。テキストが折り返されないだけでなく、折り返されるべきテキストが表示されません。Enter キーを押すと期待どおりに新しい行が作成されますが、テキストを折り返すことはできません。

4

2 に答える 2

3

問題は、EditText が含まれている TableLayout にあります。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);
于 2013-10-04T17:44:25.120 に答える