2013-01-18 75 views
0

我在寫一個非常簡單的android應用程序。當用戶觸摸表面並移動他們的手指時,圖像將被繪製在他們的手指下方。當他們的手指擡起時,停止。觸摸表面上的隱藏ActionBar

我希望操作欄在手指向下時隱藏,並在手指擡起時再次出現。

ActionBar被覆蓋。我認爲在我的視圖的onTouchEvent中使用ActionBar.hide()和.show()會很好,但我遇到了一些問題。

我試了幾件事。首先,我嘗試將在Activity中創建的ActionBar傳遞到視圖中,但這不起作用,因爲視圖必須在ActionBar「獲得」之前創建,所以我只需傳入一個空值。

然後我試圖讓一個靜態的動作條,我可以從我的觀點稱,但後來我得到這個錯誤:「只有創建視圖層次可以觸摸其觀點原來的線程」

任何人都知道的解決的辦法?

回答

2

看一看的是一部分的例子中,在jfeinstein10的Sliding Menu library

在這裏面,在BirdActivity.java,你會怎麼看ActionBar顯示,2秒後隱藏。您自然必須自己修改代碼,但這應該讓你開始:

線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); 
} 

UPDATE

對於缺少代碼,大部分問題都已被假定。這可能是錯誤的,只是缺乏來自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()而不是前者。