Используя последнюю библиотеку AppCompat-v21
, я использовал ActionBarActivity
для создания и заполнения PreferenceFragment
. Тем не менее, ActionBar
, похоже, не изменяет высоту и размер текста при изменении ориентации или размера экрана. Испытывая это на другие действия, это поведение, похоже, происходит только в PreferenceActivity
(в отличие от этого вопроса, заданного здесь: Емкость/переполнение ActionBar не меняется при изменении ориентации).
Прежде всего, чтобы обработать изменения ориентации, я добавил android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
в манифест. Я подозреваю, что это основная причина этой проблемы, но, как я упоминал ранее, это работает на других Activity
s.
Вот несколько скриншотов, которые объясняют проблему:
Запущен PreferenceActivity
в портретном режиме:
Поворот в альбомный пейзаж:
Запущен PreferenceActivity
в альбомном режиме:
Поворот в портрет из пейзажа:
Дополнительная информация
Вот класс PreferenceActivity
:
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
public class PrefsActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragment()).commit();
}
}
Является ли это поведение ошибкой? Если нет, есть ли обходной путь или исправление?
РЕДАКТИРОВАТЬ I
Я попытался использовать новый виджет ToolBar
, но не повезло.
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
public class PrefsActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preference);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_pref);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getFragmentManager().beginTransaction().replace(R.id.pref_frame, new PrefsFragment()).commit();
}
}