2013-08-03 4 views
19

DrawerLayoutで遊んでいて、問題が発生しました。基本的に画面の端からスワイプするとDrawerLayoutが画面から手を離すまで停止する(下記のスクリーンショットを参照)DrawerLayoutがスワイプでつまずく

Googleアップデートのコードサンプル正確に。何か案は?

Screenshot bug

そして、ここで私は私のFragmentActivityで持っている唯一のものです:

@Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final String[] names = 
       getResources().getStringArray(R.array.nav_names); 
     ArrayAdapter<String> adapter = 
       new ArrayAdapter<String>(
         getActionBar().getThemedContext(), 
         android.R.layout.simple_list_item_1, names); 

     final DrawerLayout drawer = 
       (DrawerLayout)findViewById(R.id.drawer_layout); 
     final ListView navList = 
       (ListView) findViewById(R.id.drawer); 
     navList.setAdapter(adapter); 
     navList.setOnItemClickListener(new AdapterView.OnItemClickListener() 
     { 

      @Override 
      public void onItemClick(AdapterView<?> parent, 
            View view, final int pos, long id) 
      { 
       drawer.setDrawerListener(
         new DrawerLayout.SimpleDrawerListener() 
         { 
          @Override 
          public void onDrawerClosed(View drawerView) 
          { 
           super.onDrawerClosed(drawerView); 

          } 
         }); 
       drawer.closeDrawer(navList); 
      } 
     }); 

    } 
+2

私はそれがバグだと思います。私はジンジャーブレッドと同じバグがあります。 Nexus 7でテストしましたが、これを再現できませんでした。 – vovahost

+0

奇妙な。私はバージョン4.2になっています – thunderousNinja

+1

あなたはそれが機能ではないと確信していますか? Doc: 'ユーザーが画面の左端に(左から20 dp以内)タッチすると、指がディスプレイに接触するとすぐにドロワーがはがれます。これは偶発的な発見を促進し、より豊かなフィードバックを提供します。 ' – Zyoo

答えて

11

あなたがこの問題を回避することができます注内でframeLayoutにtrueにクリック可能な属性を設定して覗い機能を20dp DrawerLayout。

アンドロイド:インスタンスのクリッカブル= "true" を

http://developer.android.com/training/implementing-navigation/nav-drawer.html

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clickable="true" /> 
    <!-- The navigation drawer --> 
    <ListView 
     android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="#111" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/darker_gray" 
     android:dividerHeight="1dp" /> 
</android.support.v4.widget.DrawerLayout> 
+3

残念ながら、これは私にとっては役に立ちません。私はまだ左からスワイプについた問題を再現することができます。 –

+0

これは、Android 4.4での私の問題を解決しました。4、OnePlus One、最小API 17、ターゲットAPI 21 – Barthy

0

あなたは私達にあなたのレイアウトXMLを示していた場合は、ルート要素としてDrawerLayoutしている場合は、私たちが見ることができました。そして、内側の2人の子供がメインレイアウトとナビゲーション引出しかどうか。 Create a Drawer Layoutによると

は、ナビゲーションドロワーを追加するには、レイアウトのルートビューとしてDrawerLayoutオブジェクトとユーザーインターフェースを宣言します。 DrawerLayoutの内部には、画面のメインコンテンツ(ドロワが隠されている場合のプライマリレイアウト)とナビゲーションドロワーの内容を含む別のビューを含むビューを1つ追加します。

+0

Wenza、あなたの答えは[リビジョン](http://stackoverflow.com/posts/32355754/revisions)をご覧ください。あなたが言っていたことを少しは推測しなければならなかったので、間違っていたらそれを修正してください。しかし、質問をするために答えを使用しないでください - コメントを投稿する特権を得ることに取り組んでください。 – Mogsdad

+0

こんにちは、答えは、ルートと2つの要素の中にdrawerlayoutを持つことでした。問題は追加的だった。 – Wenza

0

私はこのDrawerListener実装することによってこの問題を回避するために管理してきました:引き出しが見えますが開いていない場合

drawerLayout.addDrawerListener(new DrawerLayout.SimpleDrawerListener() { 
      @Override 
      public void onDrawerStateChanged(int newState) { 
       super.onDrawerStateChanged(newState); 
       if (drawerLayout.isDrawerVisible(Gravity.LEFT) && !drawerLayout.isDrawerOpen(Gravity.LEFT)) { 
        drawerLayout.closeDrawer(Gravity.LEFT); 
       } 
      } 
     }); 

は、状態変化が、それは「覗き」だ意味するたびに、私は閉じますそれ。

関連する問題