开发者

What controls the order of view's appearing on the screen on the UI?

I have an app with a layout using the following view objects. 2 spinners, 2 buttons, 1 seekbar and a custom view object that is basically a canvas I draw to.

For some reason the spinners and seekbar are drawn on top of the canvas, but the 2 buttons are not. I'm confused as to why this is.

So, how is this ordered determined?

Thanks.

Edit: XML at request (this is before I moved the customview to the top which fixes the problem). If the order is supposed to be XML based then the custom view should have covered the spinners which it did not.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <Spinner
        android:id="@+id/cc_component"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:drawSelectorOnTop="true"
        android:prompt="@string/cc_component_spinner" />

    <TextView
        android:id="@+id/desc"
        android:text="@string/step1_desc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dip"
        android:visibility="gone"
        android:layout_centerHorizontal="true"
        android:textSize="25sp"/>

    <Button
        android:id="@+id/switch_left"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"/>

    <com.cmllc.zcc.CCView
        android:id="@+id/cc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/switch_right"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        开发者_运维百科android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:background="@drawable/rightarrow1" /> 

    <Spinner
        android:id="@+id/component_color"
        android:layout_above="@+id/switch_color"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:drawSelectorOnTop="true"
        android:prompt="@string/component_color_spinner" />

    <SeekBar
        android:id="@+id/switch_color"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:max="100"
        android:minWidth="200dip"
        android:progress="50"/>

</RelativeLayout>


It should just be the order in which they are added to the view. Other than that you can use View.bringChildToFront().

See this post: Defining Z order of views of RelativeLayout in Android

And in a post here by Dianne Hackborn, an Android Developer at Google, she indicates the same thing regarding z-order behavior.

I implemented your layout, or as closely as I could without all of your resources and custom View object, and I get the results I except. The first spinner, textview, and button appear underneath the custom object, which I am imitating with the following:

<TextView
    android:id="@+id/cc"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#880000FF" />

I then see the second button, second spinner, and seekbar on top. Are you doing anything weird with your custom view? That or perhaps it is something happening due to later manipulation of your views.

Edit: I double checked and I do indeed see the display as I describe above


You're not setting any of your views relative to any others. In a relative layout, you need to tell the view that your views are above, below, etc other views. You need to give them relative settings, not just align_parent on a few of them.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜