以编程方式在任意活动的底部添加FrameLayout

时间:2012-10-26 04:21:32

标签: android layout android-activity

如何找到活动的根视图,然后在底部添加framelayout?相反,下面的代码添加到顶部,但不能到底。

    FrameLayout aLayout = new FrameLayout(getActivity());
    aLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

    ImageView image = new ImageView(getActivity());
    image.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    image.setImageResource(R.drawable.alayer_0);
    adLayout.addView(image);

    ViewGroup content = (ViewGroup) getActivity().findViewById(android.R.id.content);
    content.addView(aLayout);

5 个答案:

答案 0 :(得分:3)

可能是一个解决方案是你应该使用xml,在xml中首先采用一个相对布局,而不是在内部相对布局中采用框架布局并将框架布局的属性设置为 -

android:layout_alignParentBottom="true"

所以你的框架布局将显示在屏幕的底部。希望它能为你完美地工作。

答案 1 :(得分:1)

将一些id分配给您的Root布局(XML的主布局)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linear_root"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

活动类,映射根布局

LinearLayout mRootLayout;

mRootLayout=(LinearLayout) findViewById(R.id.linear_root);

mRootLayout.add(yourFrameLayout);// this will add your FrameLayout at the last

更新:要获取任何活动的根布局,您可以使用getRootView

getWindow().getDecorView().findViewById(android.R.id.content)

答案 2 :(得分:1)

android.R.id.content FrameLayout。因此,您无法将子视图与底部对齐。

您可以为{&1>}添加一个RelativeLayout android.R.id.content FILL_PARENT为高度和宽度。

现在,您可以使用FrameLayoutRelativeLayout添加到ALIGN_PARENT_BOTTOM

答案 3 :(得分:1)

看起来好像要添加页脚。使用framelayout启动你的xml,然后将你的页脚包含在线性或相对布局中,并给android:layout_gravity =“bottom”。这将解决您的问题。

答案 4 :(得分:0)

或者,您也可以在FrameLayout周围添加边距。无需额外的RelativeLayout。

DisplayMetrics metrics = MyActivity.this.getResources().getDisplayMetrics();
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(0, metrics.heightPixels - 20, 0, 0);
myFrameLayout.setLayoutParams(params);

这将使FrameLayout从屏幕底部定位20个像素。

相关问题