【问题标题】:Having problems updating the visibility of a button within a popup更新弹出窗口中按钮的可见性时出现问题
【发布时间】:2012-04-21 09:09:46
【问题描述】:

我正在尝试获取它,以便当用户在弹出窗口中单击 popbtnnext 时,程序会检查数组 flaggedwordsused 的其余部分是否为空。如果不是,则按钮设置为可见并且程序继续运行。如果为空,程序将按钮更新为不可见。

    popbutnext.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
        f++;
        for (int g= f+1; g<flagwordsused.length; g++) {
              if (flagwordsused[g] != null) {
                popbutnext.setVisibility(0);
                break;
              }
              else{
                  poptv1.setText(""+f);
                  popbutnext.setVisibility(1);
              }
            }
    }
    });

flagwordsused 是一个包含 20 个元素的数组,在我的测试用例中,f 从 0 开始,字符串“very”占据元素 0,所有其他值都为 null。我有一个使用 f 值更新的 textView,以便我知道程序正在访问 else 语句。该值更新得很好,但按钮的可见性永远不会改变。您能给我的任何帮助将不胜感激。 popuplayout 是在 java 中创建的,而不是在 xml 中创建的。

【问题讨论】:

    标签: java android button visibility popupwindow


    【解决方案1】:

    您应该使用 View 中的常量来设置可见性。也使代码更易于阅读:

    使 popbutnext 不可见:

    popbutnext.setVisibility(View.INVISIBLE);
    

    在构建布局时使 popbutnext 不可见并且不占用任何空间:

    popbutnext.setVisibility(View.GONE);
    

    使 popbutnext 可见:

    popbutnext.setVisibility(View.VISIBLE);
    

    它不适合你的原因是因为价值观是错误的。 Invisible 是 4,gone 是 8,visible 是 0。但是,我仍然建议使用 View 类中的常量——你永远不会知道,它们可能会在即将到来的 Android 版本中改变。看看this 链接和可见性参数。

    【讨论】:

    • 谢谢。有效。为什么我的方法不起作用?我同意你的观点,这使代码更易于阅读。
    • 好的。我发现文档说 invisible 的值是 1,gone 是 2。不过你是对的,这是一种更好的方法。谢谢。
    • 不客气 :) 如果您通过 XML 设置,这些都是正确的:developer.android.com/reference/android/view/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多