【问题标题】:setVisibilty() wont work first timesetVisibility() 不会第一次工作
【发布时间】:2012-05-16 09:08:43
【问题描述】:

我有一个称为控制器的布局,其中有几个按钮等 问题出在我的 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();
}

谁能说出问题可能是什么?这几天我一直在看这段代码,但看不出它可能是什么。

【问题讨论】:

  • 这是java还是android?如果是这样,标记它可能会有所帮助。
  • 这是什么?爪哇?是安卓版的吗?添加语言和其他相关标签,人们可能会为您提供帮助。
  • android 我忘了放这个

标签: android android-layout view visibility


【解决方案1】:

在设计 xml 时,制作小部件 android:visibility="gone"。在程序期间检查状态是否隐藏 onclick 设置View.VISIBLE 以及是否在第二次触摸时可见View.GONE

我认为这会奏效。试一次。

【讨论】:

    【解决方案2】:

    关于这段代码的几点说明:

    • isLifted 变量可能开始为假,并且在第一次触摸事件时,它不会导致向下事件发生任何事情。当用户抬起他/她的手指时,该变量设置为 true,因此可以实际处理第二个事件。这意味着第一次触摸永远不会产生任何可见的效果。
    • 您使用的是 isVisible 布尔值,而不是仅检查组件本身的可见性。这使得它们很容易不同步。

    没有完整的课程很难说,但我会调查这两点。

    【讨论】:

    • isLifted 变量开始时为 true,所以这不是问题。另一个是。我猜能见度不同步。我更改为 getVisibilty == View.Gone,现在它可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 2017-09-04
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    相关资源
    最近更新 更多