【问题标题】:Two spinners next to eachother相邻的两个旋转器
【发布时间】:2012-01-30 02:43:14
【问题描述】:

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

【问题讨论】:

  • 我无法重现您遇到的问题。您是否尝试过剥离除彼此相邻的两个微调器之外的所有内容 - 所以只有一个 LinearLayout 作为根和两个微调器?另外,您在 Eclipse 的预览版以及实际的设备/模拟器中是否有此问题?

标签: android android-layout spinner android-spinner


【解决方案1】:

这对我来说很好用:

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

【讨论】:

    【解决方案2】:

    在RelativeLayout 中,您可以使用android:layout_toRightOf="@+id/x"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>
    

    (我省略了重力定义,因为它们似乎对微调器中的文本没有影响。)

    【讨论】:

    • 试过了。使用您给出的解决方案会产生以下结果:第一个(最左边的)微调器填充父级,将另一个从屏幕上推开。此外,切换到横向会导致发生异常。异常表示 android 找不到“y”(“y”是第二个(最右边))微调器。
    • 我尝试为第一个微调器设置固定宽度。那行得通。但是现在我没有让它们每个都完全填充父母宽度的 50%。我上面提到的异常仍然存在。
    【解决方案3】:

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

    【讨论】:

    • 我刚改了。不幸的是没有帮助。让我补充一点,这个问题也存在于景观中。
    • 很抱歉听到这个问题,我赞成这个问题,希望它会得到回应。
    【解决方案4】:

    对我有用的替代解决方案。我将 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>
    

    【讨论】:

      【解决方案5】:

      ///// 你可以使用 spinner widht match parent 或 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>
      

      【讨论】:

        【解决方案6】:

        虽然我看不出这段代码有什么问题,但我认为你不需要设置重力,因为 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"  />
        

        【讨论】:

        • 不。同样的问题。不过还是谢谢。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-08
        • 1970-01-01
        • 2013-05-03
        • 1970-01-01
        • 1970-01-01
        • 2012-11-21
        相关资源
        最近更新 更多