Questions tagged «android-dialogfragment»

DialogFragment是一个片段,它显示一个对话框窗口,浮动在其活动窗口的顶部。

17
如何防止单击按钮时对话框关闭
我有一个EditText用于输入的对话框。当我单击对话框上的“是”按钮时,它将验证输入,然后关闭对话框。但是,如果输入错误,我希望保留在同一对话框中。每次无论输入什么,当我单击“否”按钮时,都应自动关闭对话框。如何禁用此功能?顺便说一句,我在对话框上的按钮上使用了PositiveButton和NegativeButton。

6
如何创建没有标题的DialogFragment?
我正在创建一个DialogFragment以显示有关我的应用程序的一些帮助消息。除了一件事情之外,其他所有东西都工作正常:窗口顶部有一个黑色条纹,显示了DialogFragment,我认为这是为标题保留的,这是我不想使用的东西。 这特别痛苦,因为我的自定义DialogFragment使用白色背景,因此更改太臭名昭著而无法搁置。 让我以图形方式向您展示: 现在,我的DialogFragment的XML代码如下: <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:id="@+id/holding" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/dialog_fragment_bg" > <!-- Usamos un LinearLayout para que la imagen y el texto esten bien alineados --> <LinearLayout android:id="@+id/confirmationToast" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/confirmationToastText" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="@string/help_dialog_fragment" android:textColor="#AE0000" android:gravity="center_vertical" /> </LinearLayout> <LinearLayout android:id="@+id/confirmationButtonLL" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" …

21
如何在Android中创建自定义对话框?
我想创建一个自定义对话框,如下所示 我尝试了以下方法。 我创建了AlertDialog.Builder的子类,并使用了自定义的标题和自定义内容视图,并使用了它,但是结果与预期的不同。 另一个尝试是继承DialogFragment的子类并自定义onCreateDialog内的对话框,但结果不符合预期。 然后,我尝试使用普通的Dialog类。结果不符合预期。 在这三种情况下,问题都是当我忽略标题视图时,对话框的大小与预期不符,而当我使用标题视图时,结果是在内容视图周围有一个粗边框(这看起来确实很糟糕)。现在我心中有两个问题... 我该如何实现?由于我已经尝试了很多事情,因此直接回答将更加感激。 在Android应用中显示错误或警报对话框的最佳方法是什么? EDIT Android开发人员文档建议我们应该使用DialogFragments或Dialogs向用户显示错误/警报消息。但是有一点他们说... 提示:如果需要自定义对话框,则可以将“活动”显示为对话框,而不是使用对话框API。只需创建一个活动并将其主题设置为清单元素中的Theme.Holo.Dialog。 那是什么意思?仅使用Activity来显示错误消息不是太多吗???


26
如何设置DialogFragment的宽度和高度?
我在一个xml布局文件中指定DialogFragment的布局(我们称它为layout_mydialogfragment.xml),尤其是它的layout_width和layout_height属性(可以100dp这么说)。然后,我在DialogFragment的onCreateView(...)方法中将此布局充气,如下所示: View view = inflater.inflate(R.layout.layout_mydialogfragment, container, false); 不幸的是,我发现对话框(DialogFragment)出现时,它不遵守XML布局文件中指定的layout_width和layout_height(并且对话框根据内容的不同而收缩或扩展)。任何人都知道是否或者如何让我的对话框尊重其layout_width并layout_height在其xml布局文件中指定?目前,我必须在DialogFragment的onResume()方法中再次指定对话框的宽度和高度,如下所示... getDialog().getWindow().setLayout(width, height); ...因此,不合需要的是,必须记住在以后两个地方对对话框的宽度和高度进行任何更改。

27
Android中的全屏DialogFragment
我试图显示一个几乎全屏的DialogFragment。但是我不知道怎么做。 我显示片段的方式直接来自android开发人员文档 FragmentManager f = ((Activity)getContext()).getFragmentManager(); FragmentTransaction ft = f.beginTransaction(); Fragment prev = f.findFragmentByTag("dialog"); if (prev != null) { ft.remove(prev); } ft.addToBackStack(null); // Create and show the dialog. DialogFragment newFragment = new DetailsDialogFragment(); newFragment.show(ft, "dialog"); 我知道天真地尝试将片段中的RelativeLayout设置为fill_parent以及一些minWidth和minHeight。 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:minWidth="1000px" android:minHeight="600px" android:background="#ff0000"> 我知道DialogFragment会填满整个屏幕。但是我似乎只在垂直方向调整大小,直到水平调整到一定宽度。 我还尝试按照以下建议在代码中设置窗口属性:http : //groups.google.com/group/android-developers/browse_thread/thread/f0bb813f643604ec。但这也无济于事。 由于我是Android的新手,所以我可能对Android如何处理对话框有一些误解。我该怎么做?有没有其他方法可以达到我的目标? Android设备: 华硕EeePad …

5
如何设置DialogFragment的标题?
这应该是一个简单的任务,但是由于某种原因,我可以找到一种设置DialogFragment标题的方法。(我使用onCreateView重载设置对话框的内容)。 默认样式为标题留了一个地方,但是我在DialogFragment类上找不到任何设置它的方法。 当使用该onCreateDialog方法设置内容时,标题以某种方式神奇地设置了,所以我想知道这是设计使然,还是使用onCreateView重载时设置它的特殊技巧。

13
从DialogFragment回调到片段
问题:如何创建从DialogFragment到另一个Fragment的回调。就我而言,所涉及的活动应该完全不知道DialogFragment。 认为我有 public class MyFragment extends Fragment implements OnClickListener 然后在某个时候我可以做 DialogFragment dialogFrag = MyDialogFragment.newInstance(this); dialogFrag.show(getFragmentManager, null); MyDialogFragment的样子 protected OnClickListener listener; public static DialogFragment newInstance(OnClickListener listener) { DialogFragment fragment = new DialogFragment(); fragment.listener = listener; return fragment; } 但是,如果DialogFragment暂停并在其生命周期中恢复,则无法保证侦听器会存在。Fragment中唯一的保证是通过setArguments和getArguments通过Bundle传递的保证。 有一种方法可以引用活动(如果它应该是侦听器): public Dialog onCreateDialog(Bundle bundle) { OnClickListener listener = (OnClickListener) getActivity(); .... …

11
如何正确消除DialogFragment?
文档针对类中的dismiss()方法说了这一点Dialog: 退出此对话框,将其从屏幕上删除。可以从任何线程安全地调用此方法。请注意,关闭对话框时,您不应覆盖此方法进行清理,而应在中实现该方法onStop()。 在我的代码中,我要做的只是调用getDialog().dismiss()以将其消除。但是我什么也没做,甚至没有使用onStop()。所以我确切地问如何正确消除a DialogFragment以避免任何内存泄漏等。

7
显示片段中的对话框?
我有一些片段需要显示常规对话框。在这些对话框上,用户可以选择是/否答案,然后片段应相应地表现。 现在,Fragment该类没有onCreateDialog()重写的方法,所以我想我必须在contains中实现外部对话框Activity。可以,但是随后Activity需要以某种方式向片段报告所选答案。我当然可以在这里使用回调模式,因此该片段会在自己Activity的侦听器类中注册自己,并且Activity将通过该事件或类似事件来报告答案。 但这对于一个简单的任务来说似乎是一个很大的混乱,因为在片段中显示“简单”是-否对话框。而且,这样我Fragment就不会那么独立了。 有没有更清洁的方法可以做到这一点? 编辑: 这个问题的答案并没有真正详细解释如何使用DialogFragments显示来自Fragments的对话框。因此,AFAIK的方法是: 显示片段。 需要时,实例化DialogFragment。 使用将原始片段设置为该DialogFragment的目标.setTargetFragment()。 使用原始片段中的.show()显示DialogFragment。 当用户在此DialogFragment中选择某个选项时,将有关此选择的信息通知原始Fragment(例如,用户单击“是”),则可以使用.getTarget()获取原始Fragment的引用。 关闭DialogFragment。


4
DialogFragment setCancelable属性不起作用
我在android应用程序中工作,并且正在使用DialogFragment显示对话框,并且我想使DialogFragment不可取消。我已经将对话框的cancelable属性设置为false,但是仍然不受影响。 请查看我的代码并为我提供解决方案。 public class DialogTest extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { return super.onCreateDialog(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.dialog_test, container, true); getDialog().requestWindowFeature(STYLE_NO_TITLE); getDialog().setCancelable(false); return view; } }

16
如何更改小吃店的背景颜色?
我在alertDialog的正面单击中的DialogFragment中显示小吃栏。这是我的代码段。 Snackbar snackbar = Snackbar.make(view, "Please enter customer name", Snackbar.LENGTH_LONG) .setAction("Action", null); View sbView = snackbar.getView(); sbView.setBackgroundColor(Color.BLACK); snackbar.show(); 我正在将dialogfragment的视图传递给小吃店。我想要背景颜色黑色吗?我怎样才能做到这一点?我在DialogFragment中返回alertDialog。我设置对话框的主题如下 <style name="MyAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> <!-- Used for the buttons --> <item name="colorAccent">@color/accent</item> <!-- Used for the title and text --> <item name="android:textColorPrimary">@color/primary</item> <!-- Used for the background --> <item name="android:background">@color/white</item> </style> 尽管我将对话框的背景色设置为白色,但应通过将背景色设置为小吃栏来覆盖它。

10
无法使自定义DialogFragment在Fragment上透明
我需要在一个片段上创建一个对话框(占用整个屏幕)。该对话框必须是一个浮动对话框,将其放置在片段上方,而片段在片段外部变暗。 对于自定义对话框,无论我做什么,我都有一个具有弯曲边缘的linearLayout,该对话框的所有侧面都带有黑色边框(非常小)。我已经尽一切努力使它透明并消失(以便所有对话框只是线性布局-弯曲框) 对于DialogFragment,这就是我对onCreateView的要求 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ LinearLayout layout =(LinearLayout)inflater.inflate(R.layout.custom_dialog, null); LinearLayout item = (LinearLayout)layout.findViewById(R.id.display_item); populateItemData(item, inflater); return layout; } custom_dialog只是将android:backgroung设置为#000000的LinearLayout 这是我自定义对话框的样式 <style name="CustomDialog" parent="android:style/Theme.Dialog"> <item name="android:windowBackground">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:alwaysDrawnWithCache">false</item> <item name="android:windowContentOverlay">@null</item> </style> 我尝试了这种风格的各种组合(从我在网上看到的内容),我无法摆脱那种讨厌的黑色边框,如果将LinearLayout背景设置为除其他以外的其他颜色,则可以将其绘制为白色或其他任何颜色#000000 ... 我实际上花了3-4个小时,希望其他人能帮忙...

17
如何使DialogFragment宽度变为Fill_Parent
我正在使用一个Android应用程序DialogFragment来显示对话框,但是它的宽度很小。我怎样才能做到这fill_parent一点呢? public class AddNoteDialogFragment extends DialogFragment { public AddNoteDialogFragment() { // Empty constructor required for DialogFragment } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().setTitle(getString(R.string.app_name)); View view = inflater.inflate(R.layout.fragment_add_note_dialog, container); return view; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); // request a window …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.