2013-01-18 2 views
0

아주 간단한 안드로이드 앱을 쓰고 있습니다. 사용자가 표면을 터치하고 손가락을 움직이면 그림이 손가락 아래에 그려집니다. 손가락을 올리면 멈 춥니 다.접촉 표면에 액션 바를 숨기기

손가락이 내려 갔을 때 액션 바를 숨기고 싶을 때 손가락을 올렸을 때 다시 나타나기를 원합니다.

ActionBar가 오버레이됩니다. ActionBar.hide()와 .show()를 사용하여 내 view의 onTouchEvent가 정상적으로 작동한다고 생각했지만 몇 가지 문제가 발생했습니다.

몇 가지 시도해 봤습니다. 먼저 Activity에서 생성 된 ActionBar를 뷰에 전달하려고 시도했지만 ActionBar가 "got"되기 전에 뷰가 만들어 져야하므로 작동하지 않았습니다. 따라서 null 값을 전달할 것입니다.

나는 그때 내 시야에서 호출 할 수있는 정적 액션 바을 만들려고하지만, 나는이 오류 얻을 : ". 그 의견을 만질 수있는 뷰 계층 구조를 생성 만 원래 스레드를"

누구나 알고 이 주위에 방법?

답변

2

의 일부인 예제 중 하나를 살펴 타고 jfeinstein10의 그것에서 Sliding Menu library

BirdActivity.java에, 당신은 ActionBar이 표시 2 초 후 숨겨진하는 방법을 볼 수 있습니다. 당신을 자연스럽게 코드를 스스로 수정해야합니다. 시작하기 :

호선 (53)의 코드의

발췌 - 58 : - :

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

UPDATE 86 hideActionBarDelayed() 80 호선 에서

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

코드가 부족한 경우, 대부분의 문제가 가정되었다. 그것은 단순히 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 

주 : 예에서는 문제의 활동은, 그러므로 getSupportActionBar()의 사용을 ActionBarSherlock를 사용하고 SherlockActivity을 확장합니다. ABS를 사용하지 않는 경우 전자의 대신에 getActionBar()을 사용해야합니다.

관련 문제