android: fill_parent дочернего вида заполняет экран - PullRequest
3 голосов
/ 10 августа 2011

Я пытаюсь повторить управление вращением (пожалуйста, не спрашивайте почему), я борюсь с делителем.Поддельный счетчик выглядит нормально, пока я не добавлю разделитель слева от изображения.Как только я добавляю разделитель, его высота заполняет оставшуюся часть экрана.Может кто-нибудь объяснить это?

Следующий XML:

.......

        <Spinner 
            android:id="@+id/equipment_spinner"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <Button
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"/>
            <ImageView
                android:id="@+id/spinner_arrow"
                android:layout_width="45sp"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:src="@drawable/spinner_arrow"/>
        </RelativeLayout>
    </LinearLayout>    
</ScrollView>

создает следующий экран:

enter image description here

после добавления делителя xml выглядит следующим образом:

        <Spinner 
            android:id="@+id/equipment_spinner"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <Button
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"/>
            <ImageView
                android:id="@+id/spinner_arrow"
                android:layout_width="45sp"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:src="@drawable/spinner_arrow"/>
            <View
                android:background="#e7ebe7"
                android:layout_width="1dip"
                android:layout_height="fill_parent"
                android:layout_toLeftOf="@id/spinner_arrow"/>
        </RelativeLayout>
    </LinearLayout>    
</ScrollView>

, который создает следующий экран:

enter image description here enter image description here Кто-нибудь может заметить, что я здесь не так делаю? ...

Ответы [ 2 ]

2 голосов
/ 10 августа 2011

Для этого вы должны использовать изображение из девяти патчей вместо нескольких видов.Это то, что делает Spinner по умолчанию.Я не знаю, почему вы хотите создать новый спиннер, но если вы сохраняете визуальные эффекты одинаковыми, вы можете просто повторно использовать встроенные изображения.

android.R.layout.simple_spinner_item - это макет TextView, который вы можете использовать повторно,Или вы можете просто взять фон непосредственно: android.R.drawable.btn_dropdown, который является XML-селектором, который можно нарисовать с помощью растровых изображений для каждого состояния.Более подробная информация доступна в исходном коде Android.

1 голос
/ 10 августа 2011

У вас установлена ​​высота для заполнения родительского элемента, которая заполняет оставшуюся часть Относительного макета. Вы пробовали поместить вид внутри кнопки или вид изображения следующим образом:

<Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true">
        <View
            android:background="#e7ebe7"
            android:layout_width="1dip"
            android:layout_height="fill_parent"
            android:layout_toLeftOf="@id/spinner_arrow"/>
</Button>
        <ImageView
            android:id="@+id/spinner_arrow"
            android:layout_width="45sp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:src="@drawable/spinner_arrow"/>
    </RelativeLayout>

OR

<Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"/>
        <ImageView
            android:id="@+id/spinner_arrow"
            android:layout_width="45sp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:src="@drawable/spinner_arrow">
            <View
            android:background="#e7ebe7"
            android:layout_width="1dip"
            android:layout_height="fill_parent"
            android:layout_toLeftOf="@id/spinner_arrow"/>
</ImageView>
    </RelativeLayout>

Если это не сработает, попробуйте установить высоту относительного макета на фиксированную величину, например 10-градусный или сколь угодно большой, чем у прядильщика ... возможно, вам придется попробовать fiew другого размера, просто не оставляйте относительный макет как содержимое обтекания 1011 *

...