Android如何从材料devise文档实现底部工作表
你如何实现底层specficiation? http://www.google.com/design/spec/components/bottom-sheets.html
Google云端硬盘的新更新通过浮动操作button – >显示
诚然,规范从来没有说任何有关圆angular的东西,不pipe有可能做什么,只是不确定如何去做。 目前使用的AppCompat库和目标设置为21。
谢谢
编辑
BottomSheet
现在是android-support-library
。 见John Shelleys的回答 。
不幸的是,目前没有“官方”的方式来做这件事(至less我没有意识到)。
幸运的是,有一个名为“BottomSheet”(点击)的库,它模仿了BottomSheet
的外观和感觉,并支持Android 2.1及更高版本。
在Drive应用程序的情况下,代码如下图所示:
new BottomSheet.Builder(this, R.style.BottomSheet_Dialog) .title("New") .grid() // <-- important part .sheet(R.menu.menu_bottom_sheet) .listener(new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO } }).show();
menu_bottom_sheet (基本上是一个标准的/res/menu/*.xml资源)
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/folder" android:title="Folder" android:icon="@drawable/ic_action_folder" /> <item android:id="@+id/upload" android:title="Upload" android:icon="@drawable/ic_action_file_upload" /> <item android:id="@+id/scan" android:title="Scan" android:icon="@drawable/ic_action_camera_alt" /> </menu>
输出如下所示:
我认为,这与原文非常接近。 如果您对颜色不满意,可以自定义 – 请参阅(点击) 。
回答我自己的问题,以便开发人员知道新的支持库最终提供了这个! 所有的欢呼声,谷歌!
Android开发者博客的一个例子:
// The View with the BottomSheetBehavior View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet); BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet); behavior.setBottomSheetCallback(new BottomSheetCallback() { @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { // React to state change } @Override public void onSlide(@NonNull View bottomSheet, float slideOffset) { // React to dragging events } });
上面的 @ reVerse的答案仍然是一个有效的select,但它很高兴知道有一个谷歌支持的标准。
您现在可以使用Android支持库23.2的官方BottomSheetBehavior
API。
以下是示例代码片段
bottomSheetBehavior = BottomSheetBehavior.from(findViewById(R.id.bottomSheet)); case R.id.expandBottomSheetButton: bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); break; case R.id.collapseBottomSheetButton: bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); break; case R.id.hideBottomSheetButton: bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); break; case R.id.showBottomSheetDialogButton: new MyBottomSheetDialogFragment().show(getSupportFragmentManager(), "sample");
请参阅Android BottomSheet youtube教程来了解它。
关注博客文章: http : //android-developers.blogspot.com/2016/02/android-support-library-232.html
我的XML最终看起来像这样:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/coordinator_layout" xmlns:app="http://schemas.android.com/apk/res-auto"> <LinearLayout android:id="@+id/bottom_sheet" android:layout_width="match_parent" android:layout_height="100dp" android:orientation="horizontal" app:layout_behavior="android.support.design.widget.BottomSheetBehavior"> <ImageView android:src="@android:drawable/ic_input_add" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </android.support.design.widget.CoordinatorLayout>
并在我的片段onCreateView:
coordinatorLayout = (CoordinatorLayout)v.findViewById(R.id.coordinator_layout); View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet); BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet); behavior.setPeekHeight(100); behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { // React to state change } @Override public void onSlide(@NonNull View bottomSheet, float slideOffset) { // React to dragging events } });
setPeekHeight的默认值是0,所以如果你没有设置,你将无法看到你的视图。
我会像指导原则一样直走弯路。 至于实现 – 也许最好使用这个项目的想法: https : //github.com/umano/AndroidSlidingUpPanel
我认为你可以按原样使用它,或者采取实施的想法。 关于如何实现类似的滑动面板的另一个伟大的文章可以在这里find: http : //blog.neteril.org/blog/2013/10/10/framelayout-your-best-ui-friend/
以下是其他一些选项:
- 有一个来自Flipboard ,但是embedded的活动需要修改底部表格的工作。
- tutti-ch的底部expression :这已经从Android Repo的ResolverActivity中提取出来,启动活动不需要修改。
Google最近发布了Android支持库23.2 ,正式将Bottom表单提交给Androiddevise支持库。