Два вертушки рядом друг с другом - PullRequest
3 голосов
/ 29 декабря 2011

У меня есть эта проблема, когда я ставлю два счетчика рядом друг с другом.Вот фрагмент макета 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>
...
...

Вот результат:

spinners

Я пробовал много разных вещей.Я пытался изменить вес, гравитацию, изменить родителя на 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>

Ответы [ 6 ]

5 голосов
/ 20 декабря 2013

Это прекрасно работает для меня:

<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>
1 голос
/ 29 декабря 2011

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

(Я не учел определения гравитации, так как они не влияли на текст в вашем счетчике.)

0 голосов
/ 10 июля 2018

///// Вы можете использовать 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>
0 голосов
/ 28 сентября 2016

Альтернативное решение, которое работает для меня.Я добавил 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>
0 голосов
/ 29 декабря 2011

Хотя я не вижу ничего плохого в этом коде, но я думаю, что вам не нужно устанавливать гравитацию, потому что высота 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"  />

0 голосов
/ 29 декабря 2011

Я никогда не видел такой точной проблемы, но я вижу, что вы оба заполняете родителя их шириной, которая может конфликтовать.Я бы заменил это на android:layout_width="0dip" для всех элементов, использующих вес, чтобы определить его размер, чтобы они действительно были равны.

...