您如何实现底层规格? http://www.google.com/design/spec/components/bottom-sheets.html
Google云端硬盘的新更新通过按浮动操作按钮->
理所当然的规格永远不会说圆角,无论是否有可能,只是不确定如何去做。当前使用AppCompat库,目标设置为21。
谢谢
您如何实现底层规格? http://www.google.com/design/spec/components/bottom-sheets.html
Google云端硬盘的新更新通过按浮动操作按钮->
理所当然的规格永远不会说圆角,无论是否有可能,只是不确定如何去做。当前使用AppCompat库,目标设置为21。
谢谢
Answers:
现在BottomSheet
是的一部分android-support-library
。请参阅约翰·雪莱的回答。
不幸的是,目前还没有“官方”方式来做到这一点(至少我没有意识到)。
幸运的是,有一个名为“ BottomSheet”(单击)的库,它模仿的外观BottomSheet
并支持Android 2.1及更高版本。
如果是云端硬盘应用,则该库的代码如下所示:
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>
输出看起来像这样:
我认为这与原始版本非常接近。如果您对颜色不满意,可以自定义颜色-参见(单击)。
getShareActions
方法中的代码以获取所有可能的共享选项。顺便说一句,也可以用于调用.limit(R.integer.num_share_actions)
生成器,除非您希望工作表覆盖整个屏幕
回答我自己的问题,以便开发人员知道新的支持库终于可以提供此功能!所有人欢呼所有功能强大的Google!
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
}
});
在博客文章之后: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,因此,如果未设置,则将无法查看视图。
com.google.android.material.bottomsheet.BottomSheetBehavior
您现在可以BottomSheetBehavior
从android支持库23.2使用Official 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教程,以获取有关它的理解。
我会按照指南中的说明去做。至于实现-也许最好使用这个项目中的想法:https : //github.com/umano/AndroidSlidingUpPanel
我认为您可以按原样使用它,也可以将其用于实现。关于如何实现类似滑动面板的另一篇很棒的文章可以在这里找到:http : //blog.neteril.org/blog/2013/10/10/framelayout-your-best-ui-friend/