Я разрабатываю приложение, которое должно быть совместимо с Android 2.2+, используя ActionBarSherlock для настройки ActionBar на устройствах до ICS.ActionBar переполнен на устройствах до ICS
У меня возникла проблема только с устройствами 2.2 и 2.3, которые делают содержимое переполнения ActionBar, даже если содержимое соответствует экрану устройства. Что-то вроде этого:
Я уже опробовал (на эмуляторе) размер экрана устройства (MDPI на 320x480) стереосистеме и обновите Android 4.0 и она отлично работает, поэтому я считаю, что проблема-то связана с ActionBarSherlock.
Я также судимо уменьшаю свои файлы значков, но хотя изображения были меньше, контент все еще переполнялся.
Вот мой styles.xml файл:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
</style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="actionBarStyle">@style/AppBaseTheme.ActionBarStyle</item>
<item name="actionBarTabStyle">@style/AppBaseTheme.ActionBarTabStyle</item>
<item name="actionBarTabBarStyle">@style/AppBaseTheme.ActionBarTabBarStyle</item>
</style>
<style name="AppBaseTheme.ActionBarStyle" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
<item name="background">@drawable/action_bar_background</item>
<item name="android:background">@drawable/action_bar_background</item>
</style>
<style name="AppBaseTheme.ActionBarTabStyle" parent="Widget.Sherlock.Light.ActionBar.TabView.Inverse">
<item name="background">@android:color/transparent</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:paddingLeft">0dip</item>
<item name="android:paddingRight">0dip</item>
</style>
<style name="AppBaseTheme.ActionBarTabBarStyle" parent="Widget.Sherlock.Light.ActionBar.TabBar.Inverse">
<item name="background">@drawable/action_bar_tab_divider</item>
<item name="android:background">@drawable/action_bar_tab_divider</item>
<item name="divider">@drawable/sp</item>
<item name="android:divider">@drawable/sp</item>
</style>
Файл @ вытяжке/action_bar_background является 320px в ширину и как @ вытяжке/action_bar_tab_divider и @ вытяжке/зр являются 1px в ширину.
А вот код для создания вкладок на моей основной деятельности:
ActionBar actionBar = super.getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
this.createTab(actionBar, R.drawable.action_bar_tab_home_off);
this.createTab(actionBar, R.drawable.action_bar_tab_news_off);
this.createTab(actionBar, R.drawable.action_bar_tab_videos_off);
this.createTab(actionBar, R.drawable.action_bar_tab_guide_off);
private void createTab(ActionBar actionBar, int resource) {
Tab t = actionBar.newTab();
t.setTabListener(this);
t.setIcon(resource);
actionBar.addTab(t);
}
Любые идеи?
Вы говорите о стандартном Android TabBar или ActionBarSherlock TabBar? Я спрашиваю, потому что он работает так, как я хочу, в устройствах/эмуляторах 4.0+. Я даже пытался использовать тот же размер экрана (320x480) на Android 4.0, и он отлично работает – josemando
Yep ActionBarSherlock знак равноTabBar предназначен для прокрутки, как показано на изображении, это действительно scrollView, добавляющий эти изображения. Причина, по которой они работают на 4.0+, а не 2.1-2.2, вероятно, объясняется тем, что 4.0 более точно измеряет размеры. Если Android растягивает изображения только на пиксель над границами экрана, вы заметите эффект прокрутки. Также имейте в виду, что если вы придерживаетесь TabView, вам нужно учитывать разную плотность между устройствами, то есть вам понадобится предварительное изображение для каждой плотности. – Gatekeeper
У меня уже есть 4 разных набора значков для TabBar, по одному для каждой плотности. Я ищу вариант, где мне не нужно было бы повторно реализовывать всю логику TabBar ... Вы говорите, что независимо от того, насколько я изменяю размер значков, я всегда буду прокручивать, потому что изображения будут растягиваться? – josemando