3

レイアウトに問題があります。私がしていることはこれです:

  1. 子がゼロのxmlでTableLayoutを作成します。
    <TableLayout android:id="@+id/t_layout_contents" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/l_layout_tags" android:stretchColumns="1" android:paddingLeft="5dip" android:paddingRight="5dip" />
  2. プログラムで最初の行をonCreate()に挿入します。
    TableLayout tLayoutContents = (TableLayout)findViewById(R.id.t_layout_contents);
    NoteElement nr_1 = new NoteElement(this);
    tLayoutContents.addView(nr_1);

クラス「NoteElement」はTableRowを拡張します。1行目は、プレースホルダーとしての空白のImageViewと、テキストを入力するためのEditTextで構成されています。NoteElementのコンストラクタは次のようになります。

public NoteElement(Context c) {  
    super(c);  
    this.context = c;  
    defaultText = c.getResources().getString(R.string.create_note_help_text);  

    imageView = new ImageView(context);
    imageView.setImageResource(android.R.color.transparent);

    LayoutParams params = new LayoutParams(0);
    imageView.setLayoutParams(params);

    addView(imageView);
    addView(addTextField());
}

メソッドaddTextField()は、EditTextウィジェットの属性を指定します。

private EditText addTextField() {  
    editText = new EditText(context);  
    editText.setImeOptions(EditorInfo.IME_ACTION_DONE);  
    editText.setMinLines(4);  
    editText.setRawInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
    editText.setHint(R.string.create_note_et_blank_text);
    editText.setAutoLinkMask(Linkify.ALL);
    editText.setPadding(5, 0, 0, 0);
    editText.setGravity(Gravity.TOP);
    editText.setVerticalScrollBarEnabled(true);

    LayoutParams params = new LayoutParams(1);
    editText.setLayoutParams(params);

    return editText;
}

ここまでは順調ですね。しかし、charsの使用可能なスペースがなくなるとすぐに、私の問題が発生します。EditTextはそれ自体のサイズを変更しませんが、1行のEditTextに切り替えます。挿入されたテキストの長さに応じて、EditTextの高さを動的に変更する方法を必死に探しています。

誰かがこれについてのヒントを持っていますか?

4

2 に答える 2

1

私はTableLayoutを(まったく別の目的で)もう一度見setColumnShrinkable(int columnIndex, boolean isShrinkable)て、以前の問題で私を助けてくれるはずだったものに出くわしました。

詳細については、ドキュメントを参照してください:
https://developer.android.com/reference/android/widget/TableLayout.html#setColumnShrinkable%28int,%20boolean%29
私はこれをテストしていないことに注意してください。

于 2010-05-17T14:51:20.437 に答える
1

わかった。これはTableLayout一般的な問題のようです。シンプルなレイアウトで再実装しましたLinearLayout。私はその目的を均等に果たし、EditText適切に表示されます。実際、a を使用する理由がわかりません。また、実際に aが必要になる状況、つまり a では不十分TableLayoutな状況が今のところ思い浮かびません。 したがって、可能であれば、またはのような他のレイアウトを使用することをお勧めします。しかし、これらは私の 2 セントにすぎないことに注意してください...LinearLayout
LinearLayoutRelativeLayout

于 2010-05-07T08:19:04.207 に答える