0

有没有人对我应该如何处理不总是正确响应的按钮有任何建议button.setVisibility (View.VISIBLE)

我已经看到我的代码在调试器中逐步运行。该行肯定正在执行,但按钮并不总是从不可见变为可见。

没有错误消息,并且setVisibility()命令正在runOnUiThread(). 另外,我正在尽最大努力仔细管理我的线程,所以我认为在命令运行之前运行不会有问题。

有没有人有任何想法?

谢谢,R。

为了响应非常合理的请求,我添加了以下描述和代码(无论如何,什么是“alpha 通道”?)

我的应用程序本质上是一个 Android SurfaceRunner。启动时,活动表面被插入到定义我的按钮的 XML 布局中。有些按钮在 SurfaceRunner 之外,有些在上面。这是给我带来问题的最重要的人(如果这很重要的话)。但是,我还应该指出,它们也是我的代码中唯一开始不可见的部分——开始不可见似乎是问题所在。我从未遇到过任何开始可见的按钮的问题。顺便说一句,没有一个按钮在 XML 中被标记为不可见

按钮显示是使用一种方法处理的,lblButtons()每次完成可能影响按钮的操作时都会调用该方法。这是很多代码,所以我只包括这里不能正常工作的部分:

rtButton2.setVisibility (View.INVISIBLE);       
rtButton2.setTextColor (DF_VIEW == currState ? Color.BLACK : Color.WHITE);
rtButton2.setBackgroundDrawable (DF_VIEW == currState ? tr_black : tr_white);
if (currState == SEARCH_VIEW)
{
    rtButton2.setTextSize (24f);
    rtButton2.setText (Html.fromHtml (Integer.toString (app.currThr)));
    rtButton2.setVisibility (View.VISIBLE);
}
else if (listening) 
{
    rtButton2.setTextSize (14f);
    rtButton2.setText (Html.fromHtml (muting ? UNMUTE : MUTE));
    rtButton2.setVisibility (View.VISIBLE);
}

rtButton3.setVisibility (View.INVISIBLE);
rtButton3.setTextSize (14f);
rtButton3.setTextColor (DF_VIEW == currState ? Color.BLACK : Color.WHITE);
rtButton3.setBackgroundDrawable (DF_VIEW == currState ? tr_black : tr_white);
if (listening)
{
    rtButton3.setText (Html.fromHtml (recording ? STOP + "<br />" + RECORD : RECORD));
    rtButton3.setVisibility (View.VISIBLE);
}

“listening”是一个布尔值,“currState”是一个枚举状态变量。当我在调试器中运行此代码并且监听为真时,步骤顺序完全符合应有的顺序(即,rtButton2 和 rtButton3 的setText()andsetVisibility()方法都已执行,但是这两个按钮的可见性永远不会受到影响。

有什么帮助吗?

4

1 回答 1

0

会不会就像您将 textColor 和背景设置为黑色或白色一样,这与您的活动或容器的背景颜色相匹配,可以是黑色或白色......所以一切都与您的背景匹配并且看起来不可见?

我相当怀疑这两行代码。

rtButton2.setTextColor (DF_VIEW == currState ? Color.BLACK : Color.WHITE);
rtButton2.setBackgroundDrawable (DF_VIEW == currState ? tr_black : tr_white);

将按钮文本和背景的颜色设置为与容器颜色不匹配的颜色。

问候, Aqif hamid

于 2012-06-29T13:56:37.737 回答