Android如何创建类似于Google+应用的叠加下拉菜单

时间:2014-10-27 01:56:57

标签: android

我正在尝试创建一个类似于Google+应用中的下拉菜单。截图可以在下面找到。我看过Spinners和Popup Menus,但这些都不适合我想要创造的东西。第一张图片显示关闭的菜单,第二张图片显示打开时下拉菜单的样子。

http://www.droid-life.com/wp-content/uploads/2014/05/google-plus-4.4-1.jpg

菜单不应出现在操作栏内,滚动时,显示所选选项的菜单将保留在屏幕顶部。

1 个答案:

答案 0 :(得分:0)

抱歉,我没有足够的声誉来添加评论,所以我会发布一个答案,希望它能帮到任何人。这只是我的替代解决方案,试图像你发布的那样实现像google plus app这样的ui。

我目前的解决方案是使用操作栏下方的工具栏(工具栏也设置为操作栏)。然后我为工具栏添加onClickListener。点击工具栏后,将显示Recyclerview。您可以通过放置在布局中的动态数据或自定义数据来填充Recyclerview。示例代码:

main_layout.xml

<LinearLayout .... >

// the actionbar toolbar
<android.support.v7.widget.Toolbar
 android:id="@+id/action_toolbar"
 android:layout_width="match_parent"
 android:layout_height="?android:attr/actionBarSize"
        app:theme="@style/toolbarStyle"/>

// second toolbar act as the spinner
<android.support.v7.widget.Toolbar
 android:id="@+id/dropdown_toolbar"
 android:layout_width="match_parent"
 android:layout_height="?android:attr/actionBarSize"
 style="@style/dropdownToolbar">

..... // add a spinner indicator (imageview)

</android.support.v7.widget.Toolbar>

//separator line
<View
 android:id="@+id/separator_line"
 android:layout_width="match_parent"
 android:layout_height="1dp"
 android:layout_marginLeft="0dp"
 android:layout_marginRight="0dp"
 android:background="#adacad"/>

// two child overlaps in framelayout
<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white">

// the visible layout example
        <android.support.v7.widget.RecyclerView
            android:id="@+id/default_recyclerview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

// the layout that is visible when toolbar is tapped
// this is spinner content, put anything u want here
        <android.support.v7.widget.RecyclerView
            android:id="@+id/dropdown_recyclerview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="gone"/>

</LinearLayout>

这将为您提供完整的宽度和长度布局。 dropdown_recyclerview内容取决于你想要的。我添加了一个imageview来指示虚假微调器是打开还是关闭。 java的示例代码:

MainActivity.java

//action toolbar
Toolbar actionToolbar = (Toolbar) findViewById(R.id.action_toolbar);
setSupportActionBar(actionToolbar);

RecyclerView dropdownRecyclerView = (RecyclerView) findViewById(R.id.dropdown_recyclerview);

//second toolbar
Toolbar dropdownToolbar = (Toolbar) findViewById(R.id.dropdown_toolbar);

//Listen for toolbar onClick
dropdownToolbar.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
//toggle visibility of dropdown spinner
  if (!SHOW_SPINNER_FLAG) {

//set indicator close / open
  dropdownRecyclerView.setVisibility(View.VISIBLE);
} else {

//set indicator close / open
dropdownRecyclerView.setVisibility(View.VISIBLE);
     } 
   }
});

稍后您可以自定义布局并添加一些动画以显示假的微调器布局。如果有其他方式,请分享。目前这是我在我的应用程序中使用的,它对我来说很好。抱歉我的英语不好。

example app image