2

私は RelativeLayout と LinearLayout を試しましたが、それらのいずれかを理解していませんでした。

ビュー (EditText) の数が 5 ~ 10 ありますが、有効になっているものと有効になっていないものがあります。私が欲しいのは、それらをすべて表示することです。最初に左上に配置し、次に最初に右に伝播し、次にいっぱいになった場合は次の行に伝播する必要があります。

レイアウト全体を自分で書かずに、これを行う方法はありますか? :-)

4

3 に答える 3

2

このrow.xmlのようなレイアウトを作成できます

<LinearLayout....>

    <EditText1....>
    <EditText2....>

</LinearLayout>
-------------------------------INFLATE ROW TO YOUR LAYOUT
LinearLayout featureLayout = (LinearLayout) View.inflate(BonusFilms.this, R.layout.row, null);

yourLayout.addView(featureLayout); // u can use this in for loop
于 2012-04-30T11:39:47.183 に答える
2

探しているプロパティはlayout_weightで、LinearLayout内のEditText要素に設定されます。

レイアウトの重みは、そのコンテナ内の要素がスペースを割り当てる方法をUIに指示します。具体的には、各要素にどのくらいのスペースが割り当てられているかをUIに通知します。HTMLを使用したことがある場合は、列にパーセンテージを指定するようなものです。

2つのEditTextがあり、それぞれに線形レイアウトの間隔を均等に配置したい場合は、次のようにします。

<LinearLayout...>
    <EditText
        android:layout_width="0dip"
        android:layout_weight="1">
    <EditText
        android:layout_width="0dip"
        android:layout_weight="1">
</Linearlayout>

注:理由は100%わかりませんが、ウェイトで分散するプロパティ(この場合は幅)に0dipを指定する必要があります。

上記の場合、各テキストボックスには、線形レイアウトで使用可能なスペースの50%が割り当てられます。なんで?LinearLayout内のすべての要素の合計の重みは2であり、各テキストボックスには1の権利があるためです(以下の式を参照)。

([allocation for current element] / [sum of all the weights]) * 100 = % of space allocated

(1 / 2) * 100 = 50%

最初のテキストボックスが66%を占め、2番目のテキストボックスが33%を占めるようにする場合は、次のようにします。

<LinearLayout...>
    <EditText
        android:layout_width="0dip"
        android:layout_weight="2">
    <EditText
        android:layout_width="0dip"
        android:layout_weight="1">
</Linearlayout>

このようにレイアウトの重みが役立ちますが、2つの理由でラップアラウンドする機能はないと思います。1)テキストボックスには、大きさや小ささの制限はありません。制限に達して折り返す必要があることをどのようにして知ることができますか?ある時点で強制的にラップするようにminimumWidthを指定できる場合があります。

2)LinearLayoutのラップはないと思います。それらは際限なく続く一列です。クラスに含まれるものと使用可能な画面スペースの量を測定することを含む、独自のカスタムレイアウトクラスを作成する必要があるようです。

Android-子をラップするLinearLayoutHorizo​​ntal

于 2012-04-30T15:04:31.983 に答える
1

みんなから本当にいい返事がありましたが、それは私の質問に本当に答えてくれませんでした. 私自身の重い数学レイアウトを書く以外に、最良の解決策はこれです: Sherif's answer

于 2012-05-01T07:33:10.363 に答える