【问题标题】:Disable the floating action button programmatically以编程方式禁用浮动操作按钮
【发布时间】:2020-07-06 07:09:02
【问题描述】:

我有一个浮动操作按钮,我想为来宾用户停用或禁用它(我的来宾用户是userId == null)。

我尝试使用if...else,但它不起作用,并且浮动操作按钮对访客用户仍然有效。

import android.os.Bundle;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.view.View;
import android.widget.Toast;

public class inset extends AppCompatActivity {
    private String USER_ID;

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

        FloatingActionButton fab = findViewById(R.id.fab);

        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();

            }
        });
    }

}

【问题讨论】:

    标签: android floating-action-button


    【解决方案1】:

    你可以调用setClickable来设置fab可以点击还是不可以点击

            if (userId == null)
                fab.setClickable(false);
            else fab.setClickable(true);
    

    【讨论】:

      【解决方案2】:

      通过将visibility 设置为GONE 来禁用FloatingActionButton。这是代码。

      import android.os.Bundle;
      
      import com.google.android.material.floatingactionbutton.FloatingActionButton; 
      import com.google.android.material.snackbar.Snackbar;
      
      import androidx.appcompat.app.AppCompatActivity; 
      import androidx.appcompat.widget.Toolbar;
      
      import android.view.View; import android.widget.Toast;
      
      public class inset extends AppCompatActivity { 
      
      private String USER_ID;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_inset);
          Toolbar toolbar = findViewById(R.id.toolbar);
          setSupportActionBar(toolbar);
      
          FloatingActionButton fab = findViewById(R.id.fab);
      
      
          if(userID==null) fab.setVisibility(View.GONE); 
          else fab.setVisibility(View.VISIBLE); 
      
          fab.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
      
                  Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                              .setAction("Action", null).show();
      
              }
          });
      }
      }
      

      希望这会有所帮助。随时要求澄清。

      【讨论】:

        【解决方案3】:

        根据USER_ID == null的检查,有多种方法可以实现这一点

        1. 您可以通过fab.setVisibility 简单地切换 FAB 的可见性
        2. 您可以通过fab.setClickable禁用对FAB的点击
        3. 您可以通过fab.setEnabled 禁用FAB 状态
        4. 您可以检查onClick 块内的条件,并向用户显示相应的消息。

        我认为您应该采用第 1 或第 4 种方法,因为在这些情况下用户体验会更好。用户看不到按钮,或者当他没有资格触发该事件时收到正确的错误消息。

        【讨论】:

          猜你喜欢
          • 2017-01-27
          • 1970-01-01
          • 2015-11-05
          • 2021-11-24
          • 2017-11-06
          • 2015-09-07
          • 1970-01-01
          相关资源
          最近更新 更多