1

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

    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);
4

5 回答 5

3

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

android:layout_alignParentBottom="true"

所以你的框架布局将显示在屏幕底部。希望它对你完美。

于 2012-10-26T04:48:19.517 回答
1

将一些分配id给您的根布局(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">

Activity 类,映射 Root 布局

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)

于 2012-10-26T04:30:30.827 回答
1

android.R.id.content是一个FrameLayout. 所以你不能将子视图与底部对齐。

您可以做的是RelativeLayoutandroid.R.id.content中添加一个FILL_PARENT高度和宽度。

您现在可以将您的添加FrameLayoutRelativeLayoutwith 中ALIGN_PARENT_BOTTOM

于 2012-10-26T04:44:47.173 回答
1

看起来你想添加一个页脚。使用 framelayout 启动您的 xml,然后将您的页脚包含在线性或相对布局中,并提供 android:layout_gravity="bottom"。这将解决您的问题。

于 2012-10-26T05:12:33.383 回答
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 像素处。

于 2014-03-25T13:01:12.953 回答