2013-08-06 11 views
10

私のアクティビティでandroid.support.v4.widget.DrawerLayoutを使用しています。 スワイプのジェスチャーを使って開く限り、正常に動作します。DrawerLayout.openDrawerは初めて動作しません。

しかし、drawer.openDrawer(Gravity.LEFT)を呼び出してボタンをクリックして開く場合は、機能しません。

ただし、スワイプジェスチャーを使用して1回開いた場合はです。その後、ボタンをクリックすると正常に動作します

どのように私はこれを解決するか、または回避することができますか?

+0

あなたが持っているランダムボタンのボタンをクリックしますか、左上のアイコンをクリックしてドロワを切り替えたいですか? – btse

+0

それは私が持っているランダムなボタンです。繰り返しますが、奇妙なことは、スワイプジェスチャーで一度開いて閉じると正常に動作することです。ボタンを最初に試してみると、何もしません。 – user2527666

+0

これは非常に奇妙です。あなたのボタンが呼び出すメソッドが最初のクリックで呼び出されることを確認するために、Logステートメントを入れましたか? – btse

答えて

19

を実装する必要があります左上の切り替えから、それを開きたい場合は、私は同じ問題を持っていたし、私はいくつかの理由のために引き出しを表しでframeLayoutが持っていることだけがわかってきました可視性が「なくなった」に設定されていると、最初のslideGestureの間はおそらく「可視」になります。

したがって、レイアウトxmlファイルを開き、引き出しを表すFrameLayoutを見つけて、単に表示設定を消去します。私の開始タグは次のようになりました:

<FrameLayout 
    android:layout_width="305dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start"> 

それは私のために働いています。

乾杯

3

あなたがonOptionsItemSelected(MenuItem item)

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // The action bar home/up action should open or close the drawer. 
    // ActionBarDrawerToggle will take care of this. 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 

    switch (item.getItemId()) { 
    case android.R.id.home: 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
+0

私はアクションバーを使用していません... – user2527666

+0

"mDrawerToggle.onOptionsItemSelected"は、フラグメントの1つにActionBarメニューがある場合はfalseを返します。 –

0

DrawerLayoutオブジェクトに対してclearFocus()メソッドを使用してください。

0

同じ問題が発生し、レイアウト内の引き出しコンテンツ要素の幅を指定することで修正できました。

layout_width属性がないと、最初のopenDrawer()コールでドロワーが開きませんでした。その値は です。

<FrameLayout 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
</FrameLayout> 

<FrameLayout 
    android:layout_width="300dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="right" 
    android:background="#ffffff" 
    android:id="@+id/drawer_content"> 
</FrameLayout> 

0

あまりに愚か、私は空のレイアウトを設定した、 問題はちょうど上述したように、引き出しを手動その後、最初にドラッグされたとき、ボタンは、働い最初にドラッグすることなく、ナビゲーションドロワは決して開かれませんでした。

空のレイアウトを設定しないでください。

NavigationDrawerContentを表すListViewからEmptyLayoutを削除すると、もう一度完璧に動作しました。

DONT

drawerContentListView.setEmptyView(getLayoutInflater().inflate(R.layout.navigation_drawer_empty_layout, null)); 

****は、より多くの時間よりも私に負けまし。

関連する問題