Android中的底部共享表

时间:2015-07-09 23:48:04

标签: android android-intent share material-design

在Android应用程序中共享数据时,我看到多个应用程序使用底部工作表(例如Google I / O 2015)来指示应用程序执行操作,而不是标准对话框,其中包含用于处理您意图的应用程序。 / p>

例如:

Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TITLE, "Some title..");
shareIntent.putExtra(Intent.EXTRA_TEXT, "Some text");
startActivity(Intent.createChooser(shareIntent, "Share via.."));
由于OS版本选择了选择器的显示,因此

不起作用。

根据材料设计更改此代码以获取“分享底部”表单的任何方法https://www.google.com/design/spec/components/bottom-sheets.html#bottom-sheets-content enter image description here

有没有人知道第三方库在较旧的API版本上才能做到这一点?

我找到了https://github.com/soarcn/BottomSheet

但这只允许我从底部工作表创建一个菜单。我想在现实中,我可以查找所有可以执行我正在尝试的操作的应用程序,并在此库上手动添加菜单项,但我希望有一些更简单的东西,因为它不是突破性的功能。

4 个答案:

答案 0 :(得分:13)

这是运行Android 6.0的Nexus 5上相同的底页。

在旧版或修改版的Android上可能会有所不同。 (即三星设备等)

<强>代码

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "Check out this dope website! - https://mikemiller.design/"); // Simple text and URL to share
sendIntent.setType("text/plain");
this.startActivity(sendIntent);

<强>结果

enter image description here

答案 1 :(得分:3)

我们的BottomSheet实现有一个你可以使用的commons组件,它允许你为表单指定一个intent / filter / etc,它的行为与Lollipop上的系统版本相似

https://github.com/flipboard/bottomsheet

答案 2 :(得分:3)

我使用了以上两个答案的组合:在M +中使用内置底部工作表,在M以下使用https://github.com/flipboard/bottomsheet API级别。 我更喜欢Android提供的内置底板,因为它部分滑动,然后用户可以一直滑动它。第三方Bottom Sheet库提供向后兼容性,无需自己滚动,因此您可以快速删除它。但是,我更喜欢内置的。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  Intent sendIntent = new Intent();
  sendIntent.setAction(Intent.ACTION_SEND);
  sendIntent.putExtra(Intent.EXTRA_TEXT, "Content"); 
  sendIntent.setType("text/plain");
  this.startActivity(sendIntent);
}else {
  Intent intent = new Intent(Intent.ACTION_SEND);
  intent.setType("text/*");
  intent.putExtra(Intent.EXTRA_TEXT, "Content");
  BottomSheet share = BottomSheet.createShareBottomSheet(MainActivity.this, intent, "Title");
  share.show();
}

答案 3 :(得分:-1)

如果有人正在寻找Kotlin实现

@ComponentScan