Androidのレイアウトに問題があります。私はユーザーが記入するためのフォームを作ろうとしています。このフォームはプログラムで定義されており(コントロールがないサーバー提供の構成から)、プログラムで実装する必要があります。フォームにはいくつかの異なるフィールドタイプがありますが、簡単にするために、それらはすべて単純なテキストフィールド(EditText)であると仮定できます。長いラベルのレイアウトフォーム
私は現在、フォームが垂直のLinearLayoutとして実装されています。各フィールドには、フィールドラベルのTextViewとフィールドの値を入力するためのEditTextを含む水平のLinearLayoutがあります。私は、LinearLayout.LayoutParams(FILL_PARENT、WRAP_CONTENT)を使って幅を埋めるようにEditTextを設定しました。
これは、TextViewラベルが短い場合は有効ですが、長すぎるとEditTextが非常に小さくなり、ユーザーが値を入力するのが困難になります。理想的には、必要に応じてTextViewラベルの折り返しを使用して、画面の幅の少なくとも半分になるようにEditTextを希望します。私はTableRowoutでTableRowsを試しましたが、まだ難しかったです。私はむしろグリッドを強制しないので、短いラベルで行のスペースを無駄にします(他の要件が満たされていれば、私はこれに柔軟に対応します)。私は、次の行に折り返すEditTextを強制的にFlowLayoutのようなものを試してみたが、Androidではサポートされていない。
私はこの作業をより良くするための提案はありますか? XMLベースのソリューションは、プログラマチックなアプローチに移植できると仮定して受け入れられます。また、画面のサイズや向きをできるだけ柔軟にしたいと思っています。これは、幅をハードコーディングするのを避けることを意味します。
ありがとうございます。
レイアウトウェイトで遊んでみましたか?たとえば、width = 0とlayout_weight = 1の両方を設定するなどして、2つのアイテムが画面の半分を占めるようにすることができます。 –
私は体重をつぶしてみましたが、幅= 0トリックについてはわかりませんでした。私はfill/match_parentとwrap_contentだけで悩んでいた。 EditTextが短いラベルで余分なスペースを占めるのを防ぎますが、私の目的には十分です。ありがとう! –