Android:隐形对象仍然可以点击

时间:2015-08-21 12:43:13

标签: android invisible

我的活动包含可以根据用户互动显示和消失的按钮和图像。

我发现后面的物体已被设置为不可见,仍然会触发点击。他们没有处理与被点击相关的代码,但它们会暂时重新出现,然后在点击时立即再次消失。

它们似乎也在某种程度上干扰了它们顶部的按钮。当这些按钮后面有一个看不见的物体时,它们会变得非常繁琐且难以点击。

我正在使用:

object.setVisibility(View.VISIBLE);

object.setVisibility(View.INVISIBLE);

让我的项目显示和消失。这不是我应该做的吗?

编辑:

人们一直在问我他们给我的完全相同的代码。这是我给出的代码,也是我目前正在使用的代码。

        btnLifePlus5.setVisibility(View.GONE);
        btnLifePlus5.setFocusableInTouchMode(false);
        txtLifePlus5.setVisibility(View.GONE);
        txtLifePlus5.setFocusableInTouchMode(false);
        btnLifePlus1.setVisibility(View.GONE);
        btnLifePlus1.setFocusableInTouchMode(false);
        txtLifePlus1.setVisibility(View.GONE);
        txtLifePlus1.setFocusableInTouchMode(false);
        btnLifeMinus5.setVisibility(View.GONE);
        btnLifeMinus5.setFocusableInTouchMode(false);
        txtLifeMinus5.setVisibility(View.GONE);
        txtLifeMinus5.setFocusableInTouchMode(false);
        btnLifeMinus1.setVisibility(View.GONE);
        btnLifeMinus1.setFocusableInTouchMode(false);
        txtLifeMinus1.setVisibility(View.GONE);
        txtLifeMinus1.setFocusableInTouchMode(false);

将它们设置为不可见没什么区别。

6 个答案:

答案 0 :(得分:14)

让任何View隐形的人不会阻止我们触发他们的听众。只是你看不到它,所有其他东西都会一样,就好像它是可见的一样。

如果您根本不想使用它,请将其更改为View.GONE

View.INVISIBLEView.GONE 的差异:不可见对象继续利用分配给它的空间,而设置为View.GONE的对象会留下空间空间如果它不在屏幕上。

使用

object.setVisibility(View.GONE);

而不是

object.setVisibility(View.INVISIBLE);

答案 1 :(得分:6)

使用object.setVisibility(View.GONE);代替object.setVisibility(View.INVISIBLE);

View.GONE 表示此视图不可见,并且不会占用任何空间进行布局。

  

View.GONE此视图不可见,并且不占用任何空间   布局目的。

     

View.INVISIBLE此视图不可见,但仍占用空间   布局目的。

我希望它会对你有所帮助。

答案 2 :(得分:1)

尝试object.setVisibility(View.GONE)

View.GONE阻止视图绘制其布局边界(宽度和高度),而View.INVISIBLE绘制它。

答案 3 :(得分:1)

尝试:     object.setClickable(false); 作为替代方案,您可以:     object.setEnabled(false);

答案 4 :(得分:0)

您应该使用:

object.setVisibility(View.GONE);

View.GONE会从布局中完全删除您的视图,但View.INVISIBLE只会使您的视图不可见,但仍会在您的布局中找到,因此可以点击。

答案 5 :(得分:0)

我设法解决这个荒谬问题的唯一方法是创建一种位于我的活动中的对象之间的视图面板。此视图面板是屏幕的大小,使用相同的颜色背景,并开始不可见。

通常,我使对象A消失,并使对象B出现。当我单击之前被对象A占据的空间时,它会立即闪回到屏幕上,然后再次消失。看起来很糟糕。在下次使对象A消失之前,后续点击不会重现此错误。

修复方法是使对象A消失,使新视图面板在其顶部可见,然后使对象B出现在视图面板的顶部。因此,面板在隐藏对象和用户交互之间起着一种屏障作用。用户不知道这个视图面板甚至存在,因为它混合到标准背景中,但是当我现在单击对象A所在的空间时,它现在不再闪回到屏幕上。虽然这是一个不得不使用的糟糕解决方案,但这个操作系统有问题,我别无选择。

我的活动现在看起来非常稳定且完美。我不喜欢它,但它有效。

非常感谢,谷歌。