DialogFragment 上的 Up ActionBar 操作

2024-01-04

我有一个DialogFragment使用全屏样式setStyle(STYLE_NORMAL, R.style.Theme_App).

The DialogFragment显示良好,但向上动作(homeAsUpActionBar 上的操作)不起作用。我尝试实施onOptionsItemSelected in the DialogFragment但它从未被调用过。

有没有办法在 DialogFragment 中获取向上操作回调,以便我可以忽略它?作为参考,我正在使用ActionBarCompat.


这是不可能的,但有一个解决方法,使用Toolbar。现在您可以包括Toolbar作为你的一部分DialogFragment layout xml并可以根据您的需要设置其设计/图标。您还需要实施setNavigationOnClickListener如果您希望后退按钮像平常一样工作。请参阅下面的示例类。

package com.package.name;

import android.app.Dialog;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;



public class MyDialogFragment extends DialogFragment {
    private View parentView;
    private Toolbar toolbar;


    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        setStyle(DialogFragment.STYLE_NO_FRAME, R.style.Theme_AppCompat_NoActionBar);
        return super.onCreateDialog(savedInstanceState);
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        //The layout xml file contains the toolbar
        parentView = inflater.inflate(R.layout.dialogfragment_createpost, container, false);
        initView();
        initData();
        return parentView;
    }


    private void initView() {
        toolbar = (Toolbar) parentView.findViewById(R.id.toolbar);

    }

    private void initData() {
        toolbar.setTitle("Post");
        //Set naviagtion icon to back button drawable
        toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
// handle back button naviagtion
                dismiss();
            }
        });
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DialogFragment 上的 Up ActionBar 操作 的相关文章

随机推荐