如何在Android中向窗口管理器添加多个视图

8

安卓屏幕截图

我正在开发一个类似于 Facebook Chat Heads 的应用程序,并且知道如何将单个视图添加到窗口管理器。

如何将多个视图添加到窗口管理器?我尝试了框架布局和相对布局,但是如果我使用相对布局,如何将聊天头从一个位置移动到另一个位置呢?

为了添加多个视图,我使用了下面的代码:

chatHead = new ImageView(this);
    chatHead.setImageResource(R.drawable.ic_launcher);
    TextView t = new TextView(this);
    t.setText("Blessan Mathew");
    t.setBackgroundColor(Color.CYAN);
    params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    childLayout.addView(t, params1);

    params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    childLayout.addView(chatHead, params1);
    fr.addView(childLayout);

    params = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.TYPE_PHONE,
        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
        PixelFormat.TRANSLUCENT
    );
    params.gravity = Gravity.TOP | Gravity.LEFT;
    params.x = 0;
    params.y = 100;
    windowManager.addView(fr, params);

我该如何拖动聊天头部来移除视图?
1个回答

10

ImageView顶部添加通知,并将两个视图一起移动:

使用RelativeLayout作为父布局,并将ImageViewTextView添加到其中。

private RelativeLayout parentlayout;
TextView notification;

chatHead = new ImageView(this);
chatHead.setImageResource(R.drawable.deals);
chatHead.setId(imageid);
parentlayout = new RelativeLayout(this);

notification = new TextView(this);
notification.setTextColor(Color.parseColor("#494949"));
notification.setText("1");
notification.setId(nameid);
notification.setTextSize(19);

final RelativeLayout.LayoutParams params_imageview = new RelativeLayout.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT);

params_imageview.addRule(RelativeLayout.ALIGN_PARENT_LEFT);

final RelativeLayout.LayoutParams params_name = new RelativeLayout.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT);

params_name.addRule(RelativeLayout.ALIGN_RIGHT, imageid);
params_name.addRule(RelativeLayout.ALIGN_TOP, imageid);

parentlayout.addView(chatHead, params_imageview);// adding user image to view
parentlayout.addView(notification, params_name);

最后进行以下更改:

mWindowManager.updateViewLayout(parentlayout, params);

mWindowManager.addView(parentlayout, params);

注:使用形状来样式化 TextView 并获得与 Facebook 完全相同的通知!! :)


谢谢您的回复。如果我使用上面的代码,文本视图和图像视图都会移动,但我想移动单个视图。就像在上面的照片中,我可以拖动聊天头像来取消图像。 - rajahsekar
我遇到了同样的问题! 我需要移动气泡,但是由于相对布局是气泡图像的父级,所以无法实现。有什么解决办法吗? - Arjun Issar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接