0

我在 Android 应用程序中使用ShowcaseView 。我希望能够ShowcaseViewDialogFragment. 但对我来说,ShowcaseView显示在DialogFragment.

此项目的 github 上有关于此主题的未解决问题。但我想我会按照建议在这里问。这篇文章提到他解决了“使用虚假活动作为对话片段”的问题。但我不确定这意味着什么。也许这意味着他没有使用 a DialogFragment,而是使用 anActivity并将其显示为DialogFragment? 我知道您可以将活动的主题设置为 Manifest: 中的对话框android:theme="@android:style/Theme.Dialog"

其他 github 问题在此处此处

我正在使用这样的“旧版”版本ShowcaseView

ViewTarget target = new ViewTarget(R.id.imageView, getActivity());
ShowcaseView.insertShowcaseView(target, getActivity(), R.string.showcase_title, R.string.showcase_details);
4

2 回答 2

1

因此,要ShowcaseView在 a 上正确显示DialogFragment,我们必须将 a 显示DialogFragment为 aFragment而不是将 a 显示DialogFragment为 a Dialog

在 中DialogFragment,我们可以有这样的东西:

public static class MyDialogFragment extends DialogFragment {

public static MyDialogFragment newInstance() {
    return new MyDialogFragment();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.hello_world, container, false);
    View tv = v.findViewById(R.id.text);
    ((TextView)tv).setText("This is an instance of MyDialogFragment");
    return v;
}

我们可以在这样的 Activity 中显示它:

public class MyDialogActivity extends Activity{

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_contact_manager);
    if (savedInstanceState == null) {
        MyDialogFragment fragment = MyDialogFragment.newInstance();
        getSupportFragmentManager()
            .beginTransaction()
            .add(R.id.frameLayout, fragment, "Some_tag")
            .commit();
    }
}

activity_contact_manager.xml 布局可以是:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" />

AndroidManifest.xml 条目可能是:

<activity
    android:name=".activity.MyDialogActivity"
    android:theme="@android:style/Theme.Dialog" />
于 2014-05-27T18:38:46.930 回答
0

您应该编写添加方法,更改ActivityDialogFragment

private void show(DialogFragment dialog) {
    ((ViewGroup) dialog.getDialog().getWindow().getDecorView()).addView(this);
}

它对我有用。

于 2016-03-25T09:36:17.827 回答