getHeight() представления дает одинаковый результат для портрета и пейзажа в Android
Для моего приложения я использую аккордовую раскладку, в которой у меня есть три панели, и я пытаюсь установить размеры панелей (texview), соответствующие размеру высоты устройства. Это не работает, когда есть изменение ориентации экрана. Размер моего вида не меняется в зависимости от высоты устройства, когда оно находится в альбомной ориентации. Пожалуйста, помогите мне в этом.
Это мой код
if(layoutView.getId() == R.id.Advertitletext)
{
openLayout = panel1;
v = panel1.getVisibility();
hideThemAll();
if(v != View.VISIBLE)
{
panel1.setVisibility(View.VISIBLE);
params = advertoutput.getLayoutParams();
params.height = parentLinear.getHeight()-msgrecvtitle.getHeight()-msgsenttitle.getHeight()-mLogCheck.getHeight()-PearActivity.peartabs.getHeight();
advertoutput.setLayoutParams(params);
}
}
это мой метод onConfiguration()
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
ViewTreeObserver observer = parentLinear.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
parentLinear.getViewTreeObserver().removeGlobalOnLayoutListener(this);
if(openLayout==panel1){
params = advertoutput.getLayoutParams();
params.height = parentLinear.getHeight()-msgrecvtitle.getHeight()-msgsenttitle.getHeight()-mLogCheck.getHeight()-PearActivity.peartabs.getHeight();
advertoutput.setLayoutParams(params);
}
else if(openLayout == panel2){
params = msgrecvoutput.getLayoutParams();
params.height = parentLinear.getHeight()-adverttitle.getHeight()-msgsenttitle.getHeight()-mLogCheck.getHeight()-PearActivity.peartabs.getHeight();
msgrecvoutput.setLayoutParams(params);
}else if(openLayout == panel3){
params = msgsentoutput.getLayoutParams();
params.height = parentLinear.getHeight()-adverttitle.getHeight()-msgrecvtitle.getHeight()-mLogCheck.getHeight()-PearActivity.peartabs.getHeight();
msgsentoutput.setLayoutParams(params);
}
}
});
}
1 ответ
Если вы включите в свой AndroidManifest
файл, который вам нужен для обработки изменений ориентации:
android:configChanges="orientation"
Вы должны реализовать свой код внутри onConfigurationChanged()
иначе оно должно быть внутри onResume()
(поскольку действие приостановлено, затем возобновлено, и onCreate больше не вызывается.