【问题标题】:Hide floating action button based on admin privilege根据管理员权限隐藏浮动操作按钮
【发布时间】:2020-07-07 14:45:59
【问题描述】:

我正在尝试为我的 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"/>

【问题讨论】:

  • 请不要因为使用 android-studio 标签而标记问题:Android Studio 标签应该在您对 IDE 本身有疑问时使用,而不是您在其中编写(或想要编写)的任何代码。请参阅 when is it appropriate to remove an IDE tagHow do I avoid misusing tags?the tagging guide。请改用 [android] 或其他相关标签。
  • @Zoe 感谢您的编辑,注意!您还有什么其他建议可以帮助解决这里的问题吗?
  • 您是否检查过您的isAdmin 方法是否返回正确的值?
  • 我没有看到 fab.show();
  • IsAdmin 方法是异步的吗?

标签: android floating-action-button


【解决方案1】:

您需要使用View.setVisibility()FloatingActionButton.show()FloatingActionButton.hide() 仅在视图已经布局时才有效,如您可以在 documentation 中阅读的那样

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 2012-02-14
    • 2016-06-24
    • 1970-01-01
    相关资源
    最近更新 更多