0

我正在编写一个非常简单的 android 应用程序。当用户触摸表面并四处移动手指时,会在手指下方绘制图片。当他们的手指抬起时,这就停止了。

我希望操作栏在手指向下时隐藏,在手指抬起时重新出现。

ActionBar 被覆盖。我认为在我的视图的 onTouchEvent 中使用 ActionBar.hide() 和 .show() 可以正常工作,但我遇到了一些问题。

我已经尝试了几件事。首先,我尝试将 Activity 中创建的 ActionBar 传递到视图中,但这不起作用,因为必须在“获取”ActionBar 之前创建视图,所以我只会传入一个空值。

然后我尝试制作一个可以从视图调用的静态 ActionBar,但随后出现此错误:“只有创建视图层次结构的原始线程才能触及其视图。”</p>

有人知道解决这个问题的方法吗?

4

1 回答 1

2

查看 jfeinstein10 的滑动菜单库中的一个示例

在其中,在BirdActivity.java中,您将看到ActionBar2 秒后如何显示和隐藏。您自然必须自己调整代码。但这应该让你开始:

第 53 - 58 行的代码摘录:

imageView.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        getSupportActionBar().show();
        hideActionBarDelayed(mHandler);
    }
});

hideActionBarDelayed()从第80 - 86 号线出发:

private void hideActionBarDelayed(Handler handler) {
    handler.postDelayed(new Runnable() {
        public void run() {
            getSupportActionBar().hide();
        }
    }, 2000);
}

更新

由于缺少代码,大部分问题已被假设。仅仅因为缺少来自 OP 的数据,这可能是错误的。话虽如此,如果整理出“只有创建视图层次结构的原始线程才能触及其视图”。问题将解决它,也许这可能会为您解决:

Runnable run = new Runnable() {

    @Override
    public void run() {
            // RUN YOUR CODE TO HIDE / SHOW THE ACTIONBAR HERE      
    }
}; YOUR_ACTIVITY.this.runOnUiThread(run); // REPLACE WITH getActivity().runOnUiThread(run); IF THIS IS A FRAGMENT

注意:在示例中,有问题的活动使用ActionBarSherlock并扩展SherlockActivity,因此使用getSupportActionBar(). 如果您不使用 ABS,则必须使用getActionBar()而不是前者。

于 2013-01-18T03:15:33.607 回答