Facebook风格的Popup操作方法?

时间:2012-01-03 23:49:10

标签: android facebook android-layout popupwindow nine-patch

Facebook Android应用程序非常酷,我只能假设,PopupWindow()。我真的,真的很难配合布局。知道他们是如何实现popup.xml的吗?

我尝试过嵌套几个LinearLayouts。他们的边界看起来像一个9-patch drawable。这甚至可能吗?

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

        <TextView
            android:id="@+id/groupTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="some text" />
    <LinearLayout
        android:id="@+id/innerLinear"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:background="@drawable/white"
        android:orientation="vertical" >

        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </ListView>

    </LinearLayout>

</LinearLayout>

Facebook Friend Requests Popup

3 个答案:

答案 0 :(得分:1)

在给出iOS示例时,您有一个Android问题。 Facebook应用程序使用iOS本机视图,您可以使用带有Bootstrap from Twitter的Web视图执行类似操作。

看看他们的Popovers

答案 1 :(得分:0)

我正在尝试做同样的事情,我想我已经能够逆转工程了。第一项任务是确定他们使用的是哪种对象(我认为这是一个自定义对话框)。好的,然后只是玩定位和其他方面,并在那里敲打。我不确定9补丁方面,但是从布局设置的自定义对话框开始,然后配置以下选项

//create your dialog
Dialog popup = new Dialog(this);
//remove title bar
popup.requestWindowFeature(Window.FEATURE_NO_TITLE);
//set the layout resource
popup.setContentView(R.layout.custom_dialog);
//can be canceled
popup.setCancelable(true);
//touch outside of dialogue cancels
popup.setCanceledOnTouchOutside(true);
//set background to transparent instead of normal black
popup.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
//grab the layout params
WindowManager.LayoutParams lp = popup.getWindow().getAttributes();
//move the popup to desired location
lp.y -= 160/lp.height;
lp.x -= 70/lp.width;
//remove the dim effect
lp.dimAmount = 0;
//set new params
popup.getWindow().setAttributes(lp);
//show the custom dialog
popup.show();

答案 2 :(得分:0)

我通过给列表xml的背景提供一个9补丁图像并将其包含在需要的主xml中然后填充列表后切换了需要时的可见性来实现这一点...还覆盖onbackpressed以便如果列表可见并且不退出应用程序,则使列表消失...