对于那些并不总能正确响应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()
方法,但是这两个按钮的可见性永远不会受到影响。
任何帮助?
答案 0 :(得分:0)
可能就像你将你的textColor和背景设置为黑色或白色,它与你的活动或容器背景颜色相匹配,可能是黑色或白色..所以一切都与你的背景相匹配,看起来不可见?
我非常怀疑这两行代码。
rtButton2.setTextColor (DF_VIEW == currState ? Color.BLACK : Color.WHITE);
rtButton2.setBackgroundDrawable (DF_VIEW == currState ? tr_black : tr_white);
将按钮文本和背景的颜色设置为与容器颜色不匹配的颜色。
的问候, Aqif hamid