2011-01-11 13 views
3

Androidのレイアウトに問題があります。私はユーザーが記入するためのフォームを作ろうとしています。このフォームはプログラムで定義されており(コントロールがないサーバー提供の構成から)、プログラムで実装する必要があります。フォームにはいくつかの異なるフィールドタイプがありますが、簡単にするために、それらはすべて単純なテキストフィールド(EditText)であると仮定できます。長いラベルのレイアウトフォーム

私は現在、フォームが垂直のLinearLayoutとして実装されています。各フィールドには、フィールドラベルのTextViewとフィールドの値を入力するためのEditTextを含む水平のLinearLayoutがあります。私は、LinearLayout.LayoutParams(FILL_PARENT、WRAP_CONTENT)を使って幅を埋めるようにEditTextを設定しました。

これは、TextViewラベルが短い場合は有効ですが、長すぎるとEditTextが非常に小さくなり、ユーザーが値を入力するのが困難になります。理想的には、必要に応じてTextViewラベルの折り返しを使用して、画面の幅の少なくとも半分になるようにEditTextを希望します。私はTableRowoutでTableRowsを試しましたが、まだ難しかったです。私はむしろグリッドを強制しないので、短いラベルで行のスペースを無駄にします(他の要件が満たされていれば、私はこれに柔軟に対応します)。私は、次の行に折り返すEditTextを強制的にFlowLayoutのようなものを試してみたが、Androidではサポートされていない。

私はこの作業をより良くするための提案はありますか? XMLベースのソリューションは、プログラマチックなアプローチに移植できると仮定して受け入れられます。また、画面のサイズや向きをできるだけ柔軟にしたいと思っています。これは、幅をハードコーディングするのを避けることを意味します。

ありがとうございます。

+1

レイアウトウェイトで遊んでみましたか?たとえば、width = 0とlayout_weight = 1の両方を設定するなどして、2つのアイテムが画面の半分を占めるようにすることができます。 –

+1

私は体重をつぶしてみましたが、幅= 0トリックについてはわかりませんでした。私はfill/match_parentとwrap_contentだけで悩んでいた。 EditTextが短いラベルで余分なスペースを占めるのを防ぎますが、私の目的には十分です。ありがとう! –

答えて

1

レイアウトウェイトで遊んでみてください。たとえば、width = 0とlayout_weight = 1の両方を設定するなどして、2つのアイテムが画面の半分を占めるようにすることができます。

+1

助けてくれてありがとう!私はwidth = 0と2と3の重みをそれぞれlabelとfieldに使ってしまいました。私は短いラベルがあるときにこのアプローチが空きスペースを残すので、これらの重みを妥協として使用しました。 –

関連する問題