我正在写一个非常简单的Android应用程序。当用户触摸表面并移动他们的手指时,图片被绘制在他们的手指下方。当他们的手指抬起时,它会停止。
我希望操作栏在手指向下时隐藏,并在手指向上时重新出现。
ActionBar被重叠。我认为在我的视图中使用ActionBar.hide()和.show()的onTouchEvent会正常工作,但我遇到了一些问题。
我尝试了一些事情。首先,我尝试将在Activity中创建的ActionBar传递给视图,但这不起作用,因为必须在ActionBar“get”之前创建视图,所以我只是传入一个空值。
然后我尝试创建一个静态ActionBar,我可以从我的视图中调用它,但后来我得到了这个错误:“只有创建视图层次结构的原始线程才能触及它的视图。”
有人知道解决这个问题吗?
答案 0 :(得分:2)
看一下jfeinstein10的Sliding Menu library
中的一个例子在BirdActivity.java中,您将看到ActionBar
在2秒后如何显示和隐藏。您自然必须自己调整代码。但这应该让你开始:
第53-58行:
中的代码摘录imageView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
getSupportActionBar().show();
hideActionBarDelayed(mHandler);
}
});
来自第80行 - 第86行的hideActionBarDelayed()
:
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()
而不是前者。