- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在开发一个 Material Design 应用。我想要实现的一个功能是某种民意调查。当用户单击列表中的某个元素时,应该会显示如下所示的持久 Bottom Sheet 对话框:
然后,当用户单击任何按钮时,该对话框应该消失,并且应该显示模态 Bottom Sheet 对话框,为用户提供有关在开始时单击的列表项的更多信息。它看起来像这样:
我找不到任何关于 BottomSheetDialog 和 BottomSheetDialogFragment 的明确解释,以及如何正确使用它们,即使在阅读了有关 AppCompat 对话框的一些信息之后也是如此。所以,我的问题是:
最佳答案
最后,我找到了解决方案并且它有效。告诉我我是否做错了什么。它基本上像 this guide 中的 DialogFragment 一样工作。 ,但我做了一些不同的事情。
1) 它们的区别和DialogFragment和Dialog一样,都是模态的。如果您需要持久对话,请使用 BottomSheetBehaviour instead (我发现在我的应用中这两个对话框都必须是模态的)。
2)我必须先用一些代码回答第三个问题,然后再回答第二个问题。
3) 创建一个新的public class
,它extends BottomSheetDialogFragment
,我称之为FragmentRandomEventPoll。这里有两两件事必须实现。
重写方法onCreateView
。它与 Activity 中的 onCreate
方法几乎相同,除了它返回它应该膨胀的 View :
// We will need it later
private static String headerItem;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_random_event_poll, container, false);
header = (TextView) v.findViewById(R.id.uRnd_fragment_bottom_sheet_poll_header);
skip = (Button) v.findViewById(R.id.uRnd_fragment_bottom_sheet_button_skip);
header.setText(...);
// I implemented View.OnClickListener interface in my class
skip.setOnClickListener(this);
return v;
}
静态方法,您可以将必要的数据传递给该类并获取该类的新实例(可能我可以只使用常规构造函数,我将不得不对其进行更多试验)。 URandomEventListItem
是数据模型类。
public static FragmentRandomEventPoll newInstance(URandomEventListItem item) {
FragmentRandomEventPoll fragment = new FragmentRandomEventPoll();
headerItem = item.getHeader();
return fragment;
}
2) 要在 Activity 或任何其他地方获取输入事件,请定义一个包含必要方法的接口(interface)并为其实例创建 setter 方法:
private PollButtonClickListener listener;
public void setListener(PollButtonClickListener listener) {
this.listener = listener;
}
public interface PollButtonClickListener {
void onAnyButtonClick(Object data)
}
在你想要获取数据的地方(布局中指定了“dialog_event_poll”标签):
FragmentRandomEventPoll poll = FragmentRandomEventPoll.newInstance(events.get(id));
poll.setListener(new FragmentRandomEventPoll.PollButtonClickListener() {
@Override
public void onAnyButtonClick(Object data) {
// Do what you want with your data
}
});
poll.show(getSupportFragmentManager(), "dialog_event_poll");
}
如果有什么不清楚的地方,我的项目文件可以在 Github 上找到。 .
关于android - BottomSheetDialog/BottomSheetDialogFragment——使用哪个以及如何使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36716312/
如何在 BottomSheetDialog 上方显示 ToolBar ?显示对话框时,屏幕会变暗,因此工具栏似乎位于对话框下方且不可点击。我的工具栏(或任何其他 View )如何“在对话框上方”?或者
我有 Bottomsheetdialog,自定义 View 有 EditText 并且在 EditText 上滚动 Bottom Sheet 下降,如何禁用 BottomSheetDialog拖动。任
我正在使用 BottomSheetDialog 从客户那里获取一些输入,当用户单击 TextInputLayout 时,我的 View 包含 TextInputLayout 和 TextInputLa
我正在尝试实现新的 BottomSheetDialog,但是当我调用 .show() 时,它显示背景阴影而不是我的布局。 这是我的代码
我很好奇 BottomSheetDialog 被关闭时的行为:当用户向下拖动它以隐藏它时,它会保持隐藏状态,即使 bottomSheetDialog#show() 之后调用。这仅在它被向下拖动时发生,
如何创建一个模态的 BottomSheetDialog(Fragment),它使用工具栏切换到全屏,如 Material Design Spec 所示? 我可以通过添加 BottomSheetBeha
BottomSheetDialog在应用程序之间切换时,背景会闪烁。我做错了什么? MainActivity.java public class MainActivity extends AppCom
我想显示一个小于屏幕宽度的底部工作表对话框。 例如,Nexus 9 上 Google Play 音乐的分享选项。 你知道如何做到这一点吗? 现在我只是成功地减小了工作表内容的宽度,但背景仍然是屏幕宽度
我有 bottomsheet 检查互联网是否连接!如果没有连接底片显示,如果没有底片关闭。我使用了 bottomSheetDialog.dismiss(); 函数来防止用户按下屏幕来隐藏 bottom
我有以下 Bottom Sheet 对话框代码: abstract class BaseMvpBottomSheetFragment : BottomSheetDialogFragment() {
这是我第一次使用BottomSheetDialog,代码是这样的: final BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(
我的 showUpdateDialog 方法似乎有问题。应用程序运行时,没有出现对话框。 检查 XML 文件是否存在重复/冲突的名称。 没有记录异常。 XML 文件:
我使用 BottomSheetDialog,遇到了一些困难。我想去除黑色背景的背景,并将其更改为透明。我试过这个BottomSheetDialog with transparent backgroun
我已经像这样实现了 BottomSheetDialog: addLinkSheet = new BottomSheetDialog(this); addLinkSheetView = getLayou
我在 Activity 的 onCreate() 方法中实现了一个 Bottom Sheet ,如下所示: bottomSheet = new BottomSheetDialog(this); bot
我最近使用了 android.support.design.widget.BottomSheetDialogFragment。我想做一些类似于谷歌联系人应用程序的事情,它的 BottomSheet 可
我正在处理 BottomSheetDialogFragment 我的要求是创建底部菜单,如果我点击外部 fragment 区域,它应该不会取消对话框并且应该持续存在。 问题: fragment 外的事
我在触发 BottomSheetDialog 菜单的 setOnClickListener 的 onClick 方法时遇到问题。 这是 xml fragment 布局或 BottomSheetDial
我一直在使用 Support Library 23.2 中添加的新 BottomSheetDialog ,但我想更改对话框的默认高度。我知道它可能与控制初始高度的 behavior_peekHeigh
我正在开发一个 Material Design 应用。我想要实现的一个功能是某种民意调查。当用户单击列表中的某个元素时,应该会显示如下所示的持久 Bottom Sheet 对话框: 然后,当用户单击任
我是一名优秀的程序员,十分优秀!