Articles of android dialogfragment

Textview:使用对话框标题样式:@android:style / TextAppearance.DialogWindowTitle

我目前正在尝试构建自己的DialogFragment主题。 我的要求之一是使用标题右侧的图标。 第一个想法 简单地使用: this.getDialog().getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.dialog_title); 但不幸的是,这行代码没有结果。 第二个想法 推出我自己的布局-this.setContentView() – 使用这个textview: 这是有效的,因为我可以阅读文本,但它仍然以默认的黑色字体书写。 我期待TextAppearance.DialogWindowTitle给我的文字一个标题装饰(Holo中的蓝色字体大) 有什么想法或建议吗? 编辑 这几乎可以解决问题: @style/MyOwnDialogTitle @drawable/MyRightImage 但是android:drawableRight刚刚打破了标题布局: 第二次编辑 这有点好一点: @style/MyOwnDialogTitle @android:style/TextAppearance.DialogWindowTitle @drawable/icon

在黑暗的背景的黑暗的文本在与Theme.Sherlock.Light的AlertDialog

我正在为我的应用程序使用Theme.Sherlock.Light主题,我正在创建一个带有底层AlertDialog 。 它在Android 3.x和4.x上运行得很好,但在Android 2.x上我看到深色背景上的深色文字,这几乎无法读取。 我做错了什么,是否需要通过创建自定义样式强制浅色背景? 提前致谢。

Android关闭自定义对话框

我试图按下按钮关闭自定义对话框 //set up dialog Dialog dialog = new Dialog(BrowseActivity.this); dialog.setContentView(R.layout.about); dialog.setTitle(“This is my custom dialog box”); dialog.setCancelable(true); //there are a lot of settings, for dialog, check them all out! //set up text TextView text = (TextView) dialog.findViewById(R.id.TextView01); text.setText(R.string.app_help_message); //set up image view ImageView img = (ImageView) dialog.findViewById(R.id.ImageView01); img.setImageResource(R.drawable.icon); //set up button Button button = (Button) […]

使用appCompat 23+创建自定义材质对话框的正确方法

好的,我真的很困惑如何使用最新的appcompat v23.0.1正确地创建自定义对话框这里有几种方法 第一种方式: public class AddTipDialogFrag extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { int title = getArguments().getInt(“title”); AppCompatDialog dialogCompat = new AppCompatDialog(getActivity(), R.style.MyAlertDialogStyle); dialogCompat.setTitle(title); //doesn’t work btw dialogCompat.setContentView(R.layout.add_tip_fragment); return dialogCompat; } } 第二种方式: public class AddTipDialogFrag extends AppCompatDialogFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.add_tip_fragment,container, […]

关闭onTouchOutside上的DialogFragment(不是Dialog)

我已经搜索了有关解除对话onTouchOutside的所有答案,但是,我在我的应用程序中使用DialogFragment 。 当用户在DialogFragment区域外单击时,如何解除DialogFragment 。 我已经检查了Dialog的setCanceledOnTouchOutside的源代码 public void setCanceledOnTouchOutside(boolean cancel) { if (cancel && !mCancelable) { mCancelable = true; } mCanceledOnTouchOutside = cancel; } 还有另一个可能有趣的function是isOutOfBounds private boolean isOutOfBounds(MotionEvent event) { final int x = (int) event.getX(); final int y = (int) event.getY(); final int slop = ViewConfiguration.get(mContext).getScaledWindowTouchSlop(); final View decorView = getWindow().getDecorView(); return (x < -slop) […]

在DialogFragment中未调用OnCancelListener

我有一个简单的AlertDialog ,它显示了一些项目的列表,点击其中一个项目后,单击的项目将传递回封闭的Activity 。 我还希望在用户取消对话框时执行一些默认处理(使用后退按钮 ) – 更具体地说,我想在这种情况下将空字符串传递给活动。 但是,如果我将对话框放在DialogFragment (来自兼容包 )中,则在使用后退按钮关闭对话框时不会调用 OnCancelListener 。 我究竟做错了什么? public class SelectItemDialog extends DialogFragment { public interface Callback { void onItemSelected(String string); } private static final String ARG_ITEMS = “items”; private Callback callback; public static SelectItemDialog fromItems(Collection items) { SelectItemDialog fragment = new SelectItemDialog(); fragment.setArguments(newArguments(items)); return fragment; } private static Bundle […]

全屏DialogFragment

我正在尝试创建一个宽度为MATCH_PARENT的DialogFragment,因此对话框几乎全屏(在浮动外观的边缘留下填充)。 我在Android中看到过这个解决方案Full Screen DialogFragment,但我试图避免将宽度设置为1000dp的黑客攻击。 使用我当前的布局,无论是使用FILL_PARENT还是MATCH_PARENT,它似乎都将宽度和高度设置为WRAP_CONTENT。 我已经将此解决方案用于Dialog(而不是DialogFragment),它按预期工作: getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

设置DialogFragment的大小

我一直在尝试许多命令来设置DialogFragment的大小。 它只包含一个颜色选择器,所以我删除了对话框的背景和标题: getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); getDialog().getWindow().setBackgroundDrawable( new ColorDrawable(android.graphics.Color.TRANSPARENT)); 但是我也希望将对话框放在我想要的位置,这是有问题的。 我用: WindowManager.LayoutParams params = getDialog().getWindow().getAttributes(); params.width = LayoutParams.WRAP_CONTENT; params.height = LayoutParams.WRAP_CONTENT; params.gravity = Gravity.LEFT; getDialog().getWindow().setAttributes(params); 但仍存在一个(大)障碍:即使我的对话框窗格不可见,它仍然具有一定的大小,并且它限制了我的对话框的位置。 LayoutParams.WRAP_CONTENT用于将此窗格的大小限制为我的颜色选择器,但由于某种原因它不起作用。 有没有人能够做类似的事情?

未调用Android DialogFragment onViewCreated

我正在使用android兼容性库(v4修订版8)。 在自定义DialogFragment中,没有调用onViewCreated的覆盖方法。例如。 public class MyDialogFragment extends DialogFragment{ private String mMessage; public MyDialogFragment(String message) { mMessage = message; } @Override public Dialog onCreateDialog( Bundle savedInstanceState){ super.onCreateDialog(savedInstanceState); Log.d(“TAG”, “onCreateDialog”); setRetainInstance(true); //….do something } @Override public void onViewCreated(View view, Bundle savedInstanceState) { Log.d(“TAG”, “onViewCreated”); //…do something } } onViewCreated未被记录。

为什么Android O失败并且“不属于这个FragmentManager!”

我已将我的应用程序迁移到Android Studio 3中的Android O. 在Android O模拟器上运行我的所有dialogFragments现在都失败了: – java.lang.IllegalStateException: Fragment MyDialogFragment{43ccf50 #2 MyDialogFragment} declared target fragment SettingsFragment{ceed549 #0 id=0x7f0f0142 android:switcher:2131689794:0} that does not belong to this FragmentManager! at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1316) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1624) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1689) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2470) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2260) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2213) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2122) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:746) at android.os.Handler.handleCallback(Handler.java:769) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6535) at java.lang.reflect.Method.invoke(Native Method) […]