4

当我将两个微调器放在一起时,我遇到了这个问题。这是布局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,但结果保持不变。

请帮忙!

编辑:

好的。我知道了。一些冗余,但它解决了问题。有点奇怪,为什么这行得通,而“正常方式”却行不通。谢谢大家的帮助。

<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

In a RelativeLayout, you could use android:layout_toRightOf="@+id/x" 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>

(I've left out the gravity definitions as they didn't seem to have an effect on the text in your spinner.)

于 2011-12-29T18:52:15.643 回答
0

我从未见过那个确切的问题,但我确实看到你们都用它们的宽度填充父级,这可能会发生冲突。对于所有使用权重确定其大小的元素,我会将其替换android:layout_width="0dip"为,这样它们实际上是相等的。

于 2011-12-29T18:45:38.103 回答
0

对我有用的替代解决方案。我将 android:layout_gravity="center_vertical" 添加到微调器,如下所示:

 <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginTop="10dp"
                    android:orientation="horizontal" >

                    <Spinner
                        android:id="@+id/custSpinner"
                        style="@android:style/Widget.Spinner"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_weight="1"
                        />

                    <Spinner
                        android:id="@+id/busSpinner"
                        style="@android:style/Widget.Spinner"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_weight="1"
                        />
                </LinearLayout>
于 2016-09-28T09:21:49.253 回答
0

///// 您可以使用微调器 widht 匹配父级或 0dp 都可以

                    <LinearLayout
                        android:orientation="horizontal"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content">

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

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

                    </LinearLayout>
于 2018-07-10T06:43:02.750 回答
-1

虽然我看不出这段代码有什么问题,但我认为你不需要设置重力,因为 wrap_content 高度会自动将线性布局放在顶部和左右不是这种情况,因为两个微调器都是屏幕宽度的一半。

所以使用:

<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 回答