В Android 8, когда телефон переходит на LANDSCAPE
, навигация будет на правой стороне экрана, а когда на REVERSE_LANDSCAPE
, она будет на левой стороне.
Чтобы выяснить, на какой стороне экрана он находится, нужно было получить корень View
моей активности и проверить его размер и положение следующим образом:
if (rootView.width == deviceScreenWidth) {
// device is tablet and the navigation bar is at the bottom, or
// its a samsung device with no navigation bar
}
else if (rootView.positionOnScreenX == 0) {
// the navigation bar is at the LEFT side
}
else {
// the navigation bar is at the RIGHT side
}
Но я столкнулся с новой проблемой, связанной с этим подходом, которая заключается в том, что если пользователь перейдет непосредственно с LANDSCAPE
на REVERSE_LANDSCAPE
, навигационная панель изменит местоположение, но код не запустится снова, что вызовет проблемы.
Есть ли в android sdk какие-либо обратные вызовы для прослушивания этой ротации? Или есть лучший способ узнать, с какой стороны экрана находится панель навигации, не сталкиваясь с этой проблемой?