应该是Android按钮并不总是可见

时间:2012-06-28 22:17:16

标签: android android-button

对于那些并不总能正确响应button.setVisibility (View.VISIBLE)的按钮,有没有人对我应该怎么做?

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

没有错误消息,setVisibility()命令正在runOnUiThread()内执行。此外,我正在尽力小心地管理我的线程,所以我认为这不是一个问题,它们应该在它们运行之前运行。

有人有任何想法吗?

谢谢, R上。

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

我的应用程序本质上是Android SurfaceRunner。在启动时,活动表面插入到我的XML布局中,该布局定义了我的按钮。有些按钮位于SurfaceRunner之外,有些按钮位于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()setVisibility()方法,但是这两个按钮的可见性永远不会受到影响。

任何帮助?

1 个答案:

答案 0 :(得分:0)

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

我非常怀疑这两行代码。

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

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

的问候, Aqif hamid