4

2 つのスピナーを隣り合わせにすると、この問題が発生します。レイアウト xml のフラグメントは次のとおりです。

...
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="2" >

    <Spinner
        android:id="@+id/x"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top|left"
        android:layout_weight="1" />

    <Spinner
        android:id="@+id/y"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top|right"
        android:layout_weight="1" />
</LinearLayout>

<RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content">

    <ListView
        android:id="@+id/z"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:cacheColorHint="#FFFFFF" >
    </ListView>
...
...

結果は次のとおりです。

スピナー

私は多くの異なることを試しました。重み、重力、親を RelativeLayout に変更してみましたが、結果は同じままでした。

助けてください!

編集:

Ok。わかった。多少の冗長性がありますが、問題は解決します。なぜこれが機能し、「通常の方法」が機能しないのか、ちょっと奇妙です。みんな助けてくれてありがとう。

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="2" >

    <Spinner
        android:id="@+id/x"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <RelativeLayout
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="1" >

        <Spinner
            android:id="@+id/y"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true" />
    </RelativeLayout>
</LinearLayout>
4

6 に答える 6

5

これは私にとってはうまくいきます:

<LinearLayout
    android:id="@+id/x"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="2">
    <Spinner
        android:id="@+id/s1"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
    <Spinner
        android:id="@+id/s2"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
</LinearLayout>
于 2013-12-20T08:07:28.517 に答える
1

android:layout_toRightOf="@+id/x"RelativeLayout では、 andを使用できますandroid:layout_alignTop="@+id/x"

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout>
    <Spinner
        android:id="@+id/x"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <Spinner
        android:id="@+id/y"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/x"
        android:layout_alignTop="@+id/x" />
</RelativeLayout>

(重力の定義は、スピナーのテキストに影響を与えていないようだったので省略しました。)

于 2011-12-29T18:52:15.643 に答える
0

私はその正確な問題を見たことはありませんが、競合する可能性のある幅で親を埋めていることがわかります。それを、重みを使用してそのサイズを決定するすべての要素に置き換えandroid:layout_width="0dip"ます。そのようにして、それらは実際に等しくなります。

于 2011-12-29T18:45:38.103 に答える
-1

このコードに問題はありませんが、重力を設定する必要はないと思います。なぜなら、wrap_content の高さが自動的に linearlayout を上部と左右に配置するためです。両方のスピナーが画面の半分の幅であるため、そうではありません。

だから使用:

<Spinner
    android:id="@+id/x"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" />

<Spinner
    android:id="@+id/y"
     android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"  />

于 2011-12-29T18:57:14.527 に答える