2017-01-24 4 views
-1

引き出しがあり、引き出しが開いているごとにいくつかのデータをチェックしていて、引き出しのいくつかの表示を非表示にしています。表示されていない表示が隠れています。
ここのコード私は以下を使用します:Android DrawerLayout delay

actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_opened, R.string.drawer_closed) { 

      @Override 
      public void onDrawerOpened(View drawerView) { 

        if (items.size() == 0) 
         view.setVisibility(View.GONE); 
        else view.setVisibility(View.VISIBLE);} 

       super.onDrawerOpened(drawerView); 
       invalidateOptionsMenu(); 

      } 

     drawerLayout.setDrawerListener(actionBarDrawerToggle); 

解決策はありますか?

答えて

1

問題は、引き出しが完全に開くまでonDrawerOpened()メソッドが起動しないことです。知覚遅延は、開封中にViewが見えるためです。

解決策の1つは、ドロワーのドラッグを無効にし、トグルを開いたり閉じたりすることだけです。プログラムで開く前にサイズチェックを行うことができます。ただし、onDrawerOpened()onDrawerClosed()の各メソッドでは、ドロワーを適切な状態にロックする必要があります。もちろん、その標準的なやりとりモードを失うことになります。

おそらく、引き出しが開かれ始めると、できるだけ早く確認と表示設定を行うことをお勧めします。代わりにonDrawerSlide()メソッドでこれを行うことができ、booleanフラグを保持して、ドロワーが閉じられた後にスライドしているかどうかを判断することができます。たとえば、

0

あなたは

actionBarDrawerToggle.syncState() 

を含める必要がありSyncStateでは、()正確に何をしますか?

さて、ActionBarDrawerToggle.syncState()は、変更されたアイコンの状態をDrawerLayoutのアクションに基づいて同期させます。 syncState()を削除しようとすると、矢印のアイコンがそれ以上回転しないことに気づくでしょう。

+0

がありません。あなたは間違っているアイデアを持っています私の問題はアイコンではない、引き出しレイアウト自体に問題があります。それはonDrawerOpenedでコードを実行すると時間がかかります – Radwa

+0

super.onDrawerOpened(drawerView); 「表示を隠す」コードの前に – Harmantj

+0

まだ変更はありません – Radwa