버튼의 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
여전히 '보기'에서 레이아웃 이벤트가 발생하고 잠금 모드가 설정되어 있으면 'DrawerLayout'이 그에 따라 서랍 상태를 설정합니다. 나는 내 대답을 약간 더 잘 표현할 것이다. –
오, 예, 죄송합니다. 내 논리는 조금 벗어났다. 제발. 나는 대답을 고쳐 줄 것이다. –