首页 > 解决方案 > 根据管理员权限隐藏浮动操作按钮

问题描述

我正在尝试为我的 android 应用程序的非管理员用户隐藏一个浮动操作按钮。因此,当我执行 FAB 下面的代码时,所有用户都会隐藏。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    if (FirebaseUtil.isAdmin) {
        final FloatingActionButton fab = findViewById(R.id.fab);
        fab.show();
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(ListActivity.this, ItemActivity.class));
            }
        });
}

但是,当我将条件嵌套在如下 FAB 中时,在非管理员用户单击它后,它会为非管理员隐藏。

    final FloatingActionButton fab = findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (FirebaseUtil.isAdmin) {
                startActivity(new Intent(ListActivity.this, ItemActivity.class));
            } else {
                // TODO: Hide FAB for none none-admin users
                fab.hide();
            }
        }
    });

这是XML,有什么想法我可能做错了吗?

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    app:srcCompat="@android:drawable/ic_input_add"
    android:visibility="invisible"/>

标签: androidfloating-action-button

解决方案


你需要使用View.setVisibility(). FloatingActionButton.show()或者FloatingActionButton.hide()只有在视图已经布置好的情况下才能工作,如您在文档中阅读的那样


推荐阅读