如何在android中选择最顶层的视图

时间:2012-04-19 07:55:07

标签: android android-linearlayout android-inflate

我正在尝试在另一个视图之上添加一个视图。

首先我通过xml设置视图,然后我想以编程方式添加第二个视图。 public void onCreate(Bundle 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位于我想添加的视图的顶部。

如何将第二个视图放在最上面?

3 个答案:

答案 0 :(得分:2)

LinearLayout是一种布局,可以将其子项一个接一个地垂直或水平排列。如果您想将视图叠加在另一个上面,那么请使用允许该视图的布局,例如RelativeLayout,而不是LinearLayout

答案 1 :(得分: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);

答案 2 :(得分:0)

您可以调用视图的bringToFront方法:

drawView.bringToFront();