Android setVisibility()第一次不起作用

Android setVisibility()第一次不起作用,android,android-layout,view,visibility,Android,Android Layout,View,Visibility,我有一个叫做控制器的布局,里面有几个按钮等等 问题是在我的onTouch函数中,我想在一次单击时显示它,在另一次单击时隐藏它。现在,这项工作后,2接触。第一次触摸应该显示控制器,而下一次触摸应该使其消失。第一次和第二次触摸什么也不做,但在第三次触摸时它会工作。以下是此应用程序的相关功能 public boolean onTouchEvent(MotionEvent event) { int eventx = event.getAction(); switch(eventx)

我有一个叫做控制器的布局,里面有几个按钮等等 问题是在我的onTouch函数中,我想在一次单击时显示它,在另一次单击时隐藏它。现在,这项工作后,2接触。第一次触摸应该显示控制器,而下一次触摸应该使其消失。第一次和第二次触摸什么也不做,但在第三次触摸时它会工作。以下是此应用程序的相关功能

public boolean onTouchEvent(MotionEvent event)
{

    int eventx = event.getAction();
    switch(eventx)
    {
    case MotionEvent.ACTION_DOWN:
        if(isLifted)
        {
            if(!isVisible)
            {
                Log.i("onTouch", "called showPuse menu");
                isVisible = true;
                isPaused = true;
                showPauseMenu();
            }
            else if(isVisible)
            {
                hidePauseMenu();
                isVisible= false;
            }
            isLifted = false;

        }
        break;
    case MotionEvent.ACTION_UP:
        if(!isLifted)
        {
            isLifted = true;
            //Log.i("onTouchEvent", "Lifted");
        }
    }
    return false;
}

    /***************************************************
 * Shows All Views needed to be shown
 * Also pauses video and audio
 *
 * *************************************************/
private void showPauseMenu()
{
    Log.i("showPauseMenu", "called");
    playButton.setVisibility(View.VISIBLE);
    Log.i("showPauseMenu", "plaButton visible");
    bottomButtons.setVisibility(View.VISIBLE);
    Log.i("showPauseMenu", "bottom Menu showed");
    playButton.invalidate();
    bottomButtons.invalidate();
    pauseMedia();
}
/************************************************
 * Hides Views that are part of Pause Menu
 * Also starts video and audio back again
 */
private void hidePauseMenu() {
    playButton.setVisibility(View.GONE);
    bottomButtons.setVisibility(View.GONE);
    playMedia();
}

有人能说出问题出在哪里吗?我已经看了这段代码好几天了,看不出它可能是什么。

关于这段代码的几点建议:

isLifted变量可能以false开头,在第一次触碰事件时,它不会导致down事件发生任何事情。当用户抬起手指时,变量被设置为true,这样第二个事件就可以实际处理了。这意味着第一次触摸将永远不会有任何可见的效果。 您使用的是isVisible布尔值,而不仅仅是检查组件本身的可见性。这使得它们很容易失去同步。
如果没有完整的类,这很难说,但我会研究这两点。

在设计xml时,让小部件android:visibility=gone。在程序运行期间,检查其隐藏的onclick set View.VISIBLE和second touchView.GONE是否可见


我想这会管用的。试试看。

这是java还是android?如果是这样的话,将其标记为这样可能会有所帮助。这是什么?JAVA是安卓的吗?添加语言和其他相关标签,人们可能会帮助你。android我忘了加上isLifted变量开头为true,所以这不是问题所在。另一个是。我想能见度是不同步的。我改为getVisibilty==View。现在它正常工作了,谢谢。