2012-01-05 1 views
0

У меня есть приложение, использующее TabActivity, но оно отображается неверно на ICS. Не очень интересует ActionBar или Fragments как решение, так как вкладки по-прежнему работают для моих и других приложений.Android ICS отображает вкладки tabactivity неверно

Вот как это выглядит на все другие версии Android (желаемый вид) http://i44.tinypic.com/fb9jya.png

и вот то, что он выглядит на ICS, неверно.

http://i44.tinypic.com/35btjl2.png

вот мой tabactivity вкладка код, что нужно изменить?

intent = new Intent().setClass(this, HomeMenuGroup.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    spec = tabHost.newTabSpec("homeMenuGroup").setIndicator(li.inflate(R.layout.main_tabs_home, tabHost.getTabContentView(), false)) 
      .setContent(intent); 
    tabHost.addTab(spec); 

    // Do the same for the other tabs 
    intent = new Intent().setClass(this, BuyTicketsGroup.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    spec = tabHost.newTabSpec("buyTicketsGroup").setIndicator(li.inflate(R.layout.main_tabs_buy, tabHost.getTabContentView(), false)) 
      .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, UseTicketsGroup.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    spec = tabHost.newTabSpec("useTicketsGroup").setIndicator(li.inflate(R.layout.main_tabs_use, tabHost.getTabContentView(), false)) 
      .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, MyAccountGroup.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    spec = tabHost.newTabSpec("myAccountGroup").setIndicator(li.inflate(R.layout.main_tabs_account, tabHost.getTabContentView(), false)) 
      .setContent(intent); 
    tabHost.addTab(spec); 

и вот один из моих кнопки вкладки макета XML R.layout.main_tabs_account

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="wrap_content" android:layout_height="wrap_content"> 
<TextView android:background="@drawable/switcher_account" 
     android:layout_width="80dip" 
     android:layout_height="60dip"/> 
</LinearLayout> 

ответ

2

Это трудно, чтобы дать вам окончательный ответ. Например, ваш приведенный макет R.layout.main_tabs_account не содержит ImageView, на котором отображается скриншот, что указывает на то, что в вашем вопросе что-то не синхронизировано.

Это, как говорится, вот что я хотел бы попробовать:

  • Двигайте размеры от TextView к LinearLayout. Ваш текст не должен быть 80x60 dip; ваши вкладки предположительно есть.

  • Рассмотрите возможность размещения макета, содержащего ваши TabHost и TabWidget, поскольку это может предложить дополнительные подсказки.

  • Посмотрите на this project, где я использую настраиваемые вкладки и вижу, помогает ли что-нибудь в том, как я приближаюсь к нему. Этот проект отлично работает на Android 4.0.

+0

спасибо, что указали это на 'main_tabs_content'. это текстовое изображение с выделенным фоном, которое имеет состояния. Я посмотрю, что происходит с удалением linearlayout и изменением текстового вида на изображение. – CQM

+0

он работал. спасибо за ответ, я прочертил его, просто прочитав ваши рекомендации, и то, что я себе представляю, может быть неправильным. тестирование на других устройствах 2.x, чтобы убедиться, что я сохранил совместимость – CQM