带有 clickable = "false" 的 ImageButton 仍然可以点击

Posted

技术标签:

【中文标题】带有 clickable = "false" 的 ImageButton 仍然可以点击【英文标题】:ImageButton with clickable = "false" is still clickable 【发布时间】:2020-08-02 07:18:26 【问题描述】:

我使用 ImageButton 拨打电话,但在我点击 showPhoneNumberBtn ImageButton 之前它不应该是可点击的。

ImageButton showPhoneNumberBtn = root.findViewById(R.id.showPhoneNumberBtn);
showPhoneNumberBtn.setOnClickListener(new View.OnClickListener() 
    @SuppressLint("ResourceAsColor")
    @Override
    public void onClick(View v) 
        TextView phoneNumber = root.findViewById(R.id.phoneNumberText);
        phoneNumber.setText(currentUser.getPhoneNumber());
        ImageButton makeCallBtn = root.findViewById(R.id.makeCallBtn);
        makeCallBtn.setClickable(true);
        Drawable img = getContext().getDrawable(R.drawable.ic_call_black_24dp);
        img.setTint(Color.parseColor("#3CB371"));
        makeCallBtn.setBackground(img);
    
);

ImageButton makeCallBtn = root.findViewById(R.id.makeCallBtn);
makeCallBtn.setOnClickListener(new View.OnClickListener() 
    @Override
    public void onClick(View v) 
        ActivityCompat.requestPermissions(getActivity(), new String[]Manifest.permission.CALL_PHONE, 1);
        if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) 
            Intent callIntent = new Intent(Intent.ACTION_CALL);
            callIntent.setData(Uri.parse("tel:" + phoneNumber));
            startActivity(callIntent);
         else 
            Toast.makeText(getContext(), "You don't assign permission.", Toast.LENGTH_SHORT).show();
        
    
);

【问题讨论】:

【参考方案1】:

使用setOnClickListener 会将可点击状态重置为真。您需要在之后将其设置为 false。

来自源代码:

public void setOnClickListener(OnClickListener l) 
    if (!isClickable()) 
        setClickable(true);
    
    getListenerInfo().mOnClickListener = l;

详细解释可以看here。

【讨论】:

这是这篇文章的复制粘贴:***.com/a/8196380 @Boken 没有诚实地复制粘贴它。会提到帖子。

以上是关于带有 clickable = "false" 的 ImageButton 仍然可以点击的主要内容,如果未能解决你的问题,请参考以下文章

Android-配置文件中设置“android:clickable="false"无效的原因及解决办法

Autojs知道clickable为false时,知道控件信息如何实现定位单击操作?

总是运行带有 failOnError="false" 的 Liquibase changeSet?

jQuery DIV 点击,带有锚点

如何使用 Swift 以编程方式创建 Hexagon UIButton 或 Clickable ImageView

"[[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"]" 总是返回 fal