2012-04-19 6 views
2

別のビューの上にビューを追加しようとしています。どのビューを選択するかは、アンドロイドの上に表示されます

最初にxmlでビューを設定していて、次にプログラムで2番目のビューを追加したいとします。 ます。public voidのonCreate(バンドルsavedInstanceState)

{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    LinearLayout ll = (LinearLayout) findViewById(R.id.layout); 
    drawView = new DrawView(this); 
    drawView.setBackgroundColor(Color.TRANSPARENT); 
    Bitmap bitmap = Bitmap.createBitmap(10, 100, Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bitmap); 
    drawView.draw(canvas); 
    drawView.setLayoutParams(new LayoutParams(800, 0, 0.18f)); 
    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)drawView.getLayoutParams(); 
    params.setMargins(0, 0, 0, -130); 
    drawView.setLayoutParams(params); 
    ll.addView(drawView, 2); 

}

私の問題は、XMLは、私が追加しようとしているビューの上にあるということです。

2番目のビューを上に表示するにはどうすればよいですか?

drawView.bringToFront(); 

答えて

0

あなたは、ビューのbringToFrontメソッドを呼び出すことができます。ビューを上下に重ねて表示する場合は、ではなく、RelativeLayoutのようなレイアウトを使用します。

+0

これを行うと、表示が消えるようになります。 – roiberg

+0

Strange。ビューを最初に追加しようとしますか? 'll.addView(drawView、0)' –

+0

@Luksprogが指摘したように、本当の問題はレイアウトの選択だと思います。 –

2

LinearLayoutがその子、他の垂直または水平の後に1を配置したレイアウトです:

+0

マージンはあまりにもトリックですか?または線形レイアウトでマージンを使用するものは何ですか? – roiberg

+0

@roiberg何が起こっているかを見るためにあなたの正確なレイアウトはわかりませんが、マージンはうまくいかないと思います。そして、それがうまくいっても、現在のアプリだけでなく、すべての携帯電話の画面でアプリをきれいに見せたいと思っているなら、おそらく余裕をもたせたくないでしょう。 – Luksprog

2

ビューを上下に重ねる場合は、相対レイアウトを使用する必要があります。だからあなたのケースでは相対レイアウトで "レイアウト"を置き換える、Javaコードでは、以下のようなことができます。

RelativeLayout.LayoutParams baseLayoutParam = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
    baseLayout.setLayoutParams(baseLayoutParam); 
    DrawView drawView = new DrawView(context); 
    RelativeLayout.LayoutParams rLayoutParams = new RelativeLayout.LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT, (int) (250 * Utility.getDip(context))); 
    rLayoutParams.addRule(RelativeLayout.CENTER_IN_PARENT); // Adjust accordingly to your requirement 
    drawView.setLayoutParams(rLayoutParams);ll.addView(drawView); 
+0

yea !!!ありがとう!!!!!!! – roiberg

関連する問題