Android - 在屏幕上添加视图,但在内容视图之外

时间:2012-03-18 22:08:37

标签: android

我正在创建一个需要显示在上方并与现有UI分离的组件,例如从屏幕底部滑入并保持锚定在那里,无论当前内容视图如何。我希望它是模块化和便携式的,所以预先假设FrameLayout是不现实的。

在查看Dialog和PopupWindow类的源代码时,看起来他们使用Window和WindowManager类来实现这一点,但是我无法找到关于这些类的文档的方法。

有没有一种简单的方法来完成我所描述的内容?

TYIA

2 个答案:

答案 0 :(得分:1)

为了未来搜索者的利益:答案是使用WindowManager类。这很简单,尽管缺乏文档(无论如何我都能找到):

WindowManager.LayoutParams wlp = new WindowManager.LayoutParams();
// assign position, dimensions, and layout behavior as properties of wlp
WindowManager wm = (WindowManager) getSystemService("window");
wm.addView(someView, wlp);

答案 1 :(得分:0)

最简单的方法是使用RelativeLayout。将视图放在所需位置,然后将可见性设置为已消失。当您想要显示视图时,启动动画并将可见性设置为可见。

像这样的布局

<RelativeLayout ...>
    <LinearLayout ...>
    <!-- your main UI -->
    </LinearLayout>

    <LinearLayout 
        android:id="@+id/hiddenView"
        android:visibility="gone">
        <!-- the UI for the separate component -->
    </LinearLayout>
</RelativeLayout>

在代码中

Animation someAnimation = AnimationUtils.loadAnimation(this, R.anim.some_animation);
hiddenView.startAnimation(someAnimation);
hiddenView.setVisibility(View.VISIBLE);

上面的内容很简单,但不是很通用,做一些更强大的工作意味着编写一个自定义的视图或ViewGroup,不幸的是,这些东西的深入教程很少见。