2010-11-26 7 views
0

次のビューオブジェクトを使用したレイアウトのアプリがあります。 2つのスピナー、2つのボタン、1シークバーと基本的に私が描くキャンバスであるカスタムビューオブジェクトです。UIの画面に表示されるビューの順序を制御するものは何ですか?

何らかの理由で、スピナーとシークバーがキャンバスの上に描画されますが、2つのボタンは描画されません。私はなぜこれが混乱しているのですか?

これはどのようにして決定されますか?

ありがとうございました。

編集:XML(要望に応じて、これを修正する前にカスタムビューを上に移動します)。注文がXMLベースであると想定されている場合、カスタムビューは、それがしなかったスピナーをカバーしていたはずです。

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

あなたのレイアウトファイルのコードをここに表示することができたら... –

答えて

1

ビューに追加する順番にする必要があります。それ以外の場合はView.bringChildToFront()を使用できます。

はこの記事を参照してください:ダイアンHackborn、GoogleのAndroidの開発者Defining Z order of views of RelativeLayout in Android

そしてpost hereでは、彼女はzオーダーの動作についても同じことを示します。

あなたのリソースやカスタムViewオブジェクトをすべて使わずにレイアウトを実装しましたが、私は例外を除いて結果を得ました。最初のスピナー、TextViewに、ボタン私は次のように真似ていますカスタムオブジェクト、下に表示されます。

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

私は、第2ボタン、2番スピナー、及び上部のシークバーを参照してください。あなたはあなたのカスタムビューで変なことをしていますか?それはおそらく、後であなたの意見を操作するために起こっていることです。

編集:私はダブルチェックして、私はあなたが他のものに比べて、あなたのビューのいずれかを設定していない

+0

申し訳ありませんが、私のカスタムビューをXMLファイルの中に移動し、問題を解決したが、私はまだ混乱しています。 XMLファイルがマスターの場合、カスタムビューの前にXMLで定義されているため、スピナーは私のカスタムビュー(Canvas)で覆われているはずです。 – user432209

+0

私はその特定の状況については確信していません。関連するソースコードを投稿すると、結果が正確に得られた理由をより正確に判断できる場合があります。 – Thomas

+0

XMLで編集しました – user432209

0

上記のように、私は実際にディスプレイを見ています。相対的なレイアウトでは、あなたのビューが他のビューの上、下などであることをビューに伝える必要があります。あなたはそれらのいくつかにalign_parentだけでなく、相対的な設定を与える必要があります。

+0

相対的な設定(またはその欠如)は、過去12時間以内に私が学んだことから描画命令に影響を与えません。 – user432209

+0

ええと、それはあなたが描画命令を意味するかどうかによると思います。彼は自分の意見がお互いの上に積み重なっていることを意味していると思った – Falmarri

関連する問題