【问题标题】:Fragments overlap when using actionbar and bottom navigation使用操作栏和底部导航时片段重叠
【发布时间】:2020-11-12 21:35:46
【问题描述】:

我正在尝试使用底部导航创建应用。
布局和 MainActivity 是由 Android Studio 自动创建的,我现在在操作栏中添加了一个图标,当按下该图标时,应该会出现一个新片段并显示设置。 问题是设置片段与底部导航的片段重叠(参见图片)


first 图像设置中,片段与底部导航中使用的其他片段重叠。在第二这应该是设置片段的显示方式(这里没有重叠,因为通知片段目前无效)

为了在操作栏上添加设置图标,我使用了 onCreateOptionsMenu() 方法,这是我的 MainActivity 类的代码:

public class MainActivity extends AppCompatActivity {

    private Client client;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        BottomNavigationView navView = findViewById(R.id.nav_view);
        
        AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
                R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
        NavigationUI.setupWithNavController(navView, navController);

        this.client = null;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.actionbar_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            setFragment();
            Toast.makeText(this, "Settings", Toast.LENGTH_SHORT).show();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    public void setFragment() {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

        ft.replace(R.id.nav_host_fragment, new SettingsFragment());
        ft.commit();
    }
}

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: java android android-fragments


    【解决方案1】:

    为片段布局的根视图提供背景颜色

    【讨论】:

    • 这样做只会覆盖显示的对象,但它们仍然可以点击,所以这不是一种可行的方法
    • 在片段中为您的根视图组添加 clickable = true,这可以解决您的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多