我正在尝试创建一个类似于Google+应用中的下拉菜单。截图可以在下面找到。我看过Spinners和Popup Menus,但这些都不适合我想要创造的东西。第一张图片显示关闭的菜单,第二张图片显示打开时下拉菜单的样子。
http://www.droid-life.com/wp-content/uploads/2014/05/google-plus-4.4-1.jpg
菜单不应出现在操作栏内,滚动时,显示所选选项的菜单将保留在屏幕顶部。
答案 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);
}
}
});
稍后您可以自定义布局并添加一些动画以显示假的微调器布局。如果有其他方式,请分享。目前这是我在我的应用程序中使用的,它对我来说很好。抱歉我的英语不好。