ボタンのonClickからDrawerLayoutの状態を切り替えて、スワイプを無効にしています。 これは問題なく動作しますが、アクティビティの向きが変わると、引き出しはその状態を保持しません。 開封した場合は閉鎖となります。 android:configChanges="keyboardHidden|orientation"
を追加することもあります。私の活動でDrawerLayoutは方向変更時に状態を失います
コード:
private DrawerLayout drawer;
private int drawerLayoutGravity = Gravity.RIGHT;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
disableDrawer();
View btnOpenDrawer = findViewById(R.id.btn_open_drawer);
btnOpenDrawer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
toggleDrawerState();
}
});
}
private void toggleDrawerState() {
if (drawer.isDrawerOpen(drawerLayoutGravity)) {
drawer.closeDrawer(drawerLayoutGravity);
} else {
drawer.openDrawer(drawerLayoutGravity);
}
}
/**
* doesn't let the user swipe to open the drawer
*/
private void disableDrawer() {
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
}
可能な解決策は、私が活動のonConfigurationChanged
にDrawerLayoutを再度開くが、私は設定がを変更したときDrawerLayoutの再開口を示す避けるために必要があるということです。
が、この場合には、それは問題ではありません。configChanges =「keyboardHidden |オリエンテーションを」'、これのonCreateはオリエンテーションで呼び出されていません変化する。ありがとう! – RominaV
これはまだ 'View'でレイアウトイベントをトリガーしています。ロックモードが設定されている場合、' DrawerLayout'はそれに応じてドロワーの状態を設定します。私はフレーズ私の答えは少し良いよ。 –
ああ、ええ、申し訳ありません。私のロジックは少しです。私には分かります。私は答えを修正します。 –