Android 在底部导航后面显示弹出窗口

Android 在底部导航后面显示弹出窗口,android,navigation,floating-action-button,android-popupwindow,Android,Navigation,Floating Action Button,Android Popupwindow,因此,我在我的应用程序中有一个按钮导航,里面有一个浮动按钮,我希望每次用户按下浮动按钮时,菜单后面会出现一个弹出窗口,而不是在它前面,因为它隐藏了按钮导航。有人能帮我解决这个问题吗?我真的很想知道如何做到这一点 public class MainActivity extends AppCompatActivity { BottomNavigationView bottom_navigation; FloatingActionButton story; Fragment

因此,我在我的应用程序中有一个按钮导航,里面有一个浮动按钮,我希望每次用户按下浮动按钮时,菜单后面会出现一个弹出窗口,而不是在它前面,因为它隐藏了按钮导航。有人能帮我解决这个问题吗?我真的很想知道如何做到这一点

public class MainActivity extends AppCompatActivity {

    BottomNavigationView bottom_navigation;
    FloatingActionButton story;
    Fragment selectedfragment = null;
     RelativeLayout relativeLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bottom_navigation = findViewById(R.id.bottom_navigation);
        bottom_navigation.setBackground(null);
        story=findViewById(R.id.story_floating);


      //  relativeLayout=findViewById(R.id.popup_menu);
        story.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
        openPopupwindow();


            }


        });
        bottom_navigation.setOnNavigationItemSelectedListener(navigationItemSelectedListener );
        Bundle intent = getIntent().getExtras();
        if (intent != null){
            String publisher = intent.getString("publisherid");

            SharedPreferences.Editor editor = getSharedPreferences("PREFS", MODE_PRIVATE).edit();
            editor.putString("profileid", publisher);
            editor.apply();

            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new ProfileFragment()).commit();
        } else {
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new HomeFragment()).commit();
        }
    }

    private BottomNavigationView.OnNavigationItemSelectedListener navigationItemSelectedListener =
            new BottomNavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) {

                    switch (item.getItemId()){
                        case R.id.nav_home:
                            selectedfragment = new HomeFragment();
                            break;
                        case R.id.nav_search:
                            selectedfragment = new SearchFragment();
                            break;

                        case R.id.nav_heart:
                            selectedfragment = new NotificationFragment();
                            break;
                        case R.id.nav_profile:
                            SharedPreferences.Editor editor = getSharedPreferences("PREFS", MODE_PRIVATE).edit();
                            editor.putString("profileid", FirebaseAuth.getInstance().getCurrentUser().getUid());
                            editor.apply();
                            selectedfragment = new ProfileFragment();
                            break;
                    }
                    if (selectedfragment != null) {
                        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                                selectedfragment).commit();
                    }

                    return true;
                }
            };


    


    public void openPopupwindow(){

        Intent intent=new Intent(MainActivity.this,PopUpWindow.class);
        startActivity(intent);
    }
}

您可以在同一活动中使用带有弹出式设计的布局,当按下按钮时,该布局将可见,而不是创建新活动。


public class PopUpWindow extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.popupwindowlayout);

        DisplayMetrics dm=new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);

        int width=dm.widthPixels;
        int height=dm.heightPixels;

        getWindow().setLayout((int)(width*.999),(int)(height*.3));

        WindowManager.LayoutParams params=getWindow().getAttributes();
        params.gravity=200;
        params.x=0;
        params.y=-20;

        getWindow().setAttributes(params);



    }
}