2012-06-09 3 views
8

Я пытаюсь сделать простую вкладку в Android с двумя вкладками. Моя проблема в том, что когда я помещаю этот код, на вкладке отображается только текст, но нет значков. Если я поместил текст в "", появится значок.Значок вкладки, не отображающий

Не мог бы кто-нибудь мне помочь? Моя версия для Android - 4.0.3.

Большое спасибо.

<?xml version="1.0" encoding="utf-8"?> 

<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/tabhost" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 
<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TabWidget android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@android:id/tabs" /> 

    <FrameLayout android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@android:id/tabcontent" > 

     <LinearLayout android:id="@+id/tab1" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 
      <TextView android:id="@+id/textView1" 
       android:text="Contenido Tab 1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 
    </LinearLayout> 

     <LinearLayout android:id="@+id/tab2" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 
      <TextView android:id="@+id/textView2" 
       android:text="Contenido Tab 2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 
    </LinearLayout> 

    </FrameLayout> 
</LinearLayout> 
</TabHost> 

и код вида деятельности является

public class TabTestActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Resources res = getResources(); 

    TabHost tabs=(TabHost)findViewById(R.id.tabhost); 
    tabs.setup(); 

    TabHost.TabSpec spec=tabs.newTabSpec("mitab1"); 
    spec.setContent(R.id.tab1); 
    spec.setIndicator("sss", 
      res.getDrawable(android.R.drawable.ic_btn_speak_now)); 
    tabs.addTab(spec); 

    spec=tabs.newTabSpec("mitab2"); 
    spec.setContent(R.id.tab2); 
    spec.setIndicator("TAB2", 
      res.getDrawable(android.R.drawable.ic_dialog_map)); 
    tabs.addTab(spec); 



    tabs.setCurrentTab(0); 
} 

, как вы можете видеть, это очень просто. Но когда я пишу spec.setIndicator("", res.getDrawable(android.R.drawable.ic_dialog_map)); Я вижу значок, когда я пишу spec.setIndicator("TAB2", res.getDrawable(android.R.drawable.ic_dialog_map)); Я могу видеть только TAB2, но не обоим.

Кажется, что нет пространства enougth для отображения обоих. Поэтому я попытался увеличить высоту вкладок с помощью этого

tabs.getTabWidget().getChildAt(1).getLayoutParams().height = 150; 

но не похоже на работу.

ответ

4

// ваш перепредставлены загрузки 1-ый, так что вы можете увидеть только последний добавил один

TabHost.TabSpec spec=tabs.newTabSpec("mitab1"); 

     spec.setIndicator("sss", 
       res.getDrawable(android.R.drawable.ic_btn_speak_now)); 
Intent sssIntent = new Intent(this, First.class); 
spec.setContent(sssIntent); 
     tabs.addTab(spec); 

TabHost.TabSpec spec2=tabs.newTabSpec("mitab2"); 
     spec2=tabs.newTabSpec("mitab2"); 
     spec2.setIndicator("TAB2", 
       res.getDrawable(android.R.drawable.ic_dialog_map)); 
Intent sssIntent2 = new Intent(this, Second.class); 
spec2.setContent(sssIntent2); 
     tabs.addTab(spec2); 
+0

не могли бы вы объяснить немного больше? Я не понимаю, когда ты говоришь о перегрузке? спасибо большое – theholy

+0

Это не сработает для меня –

8

я заменил имя метки с нулевым значением. Теперь я вижу только значок. Не удалось найти и другое решение.

TabHost.TabSpec spec=tabs.newTabSpec("mitab1"); 

spec.setIndicator("", 
        res.getDrawable(android.R.drawable.ic_btn_speak_now)); 
Intent sssIntent = new Intent(this, First.class); 
spec.setContent(sssIntent); 
tabs.addTab(spec); 
+0

U r right .. мы должны очистить ярлык вкладки, чтобы увидеть значок..thats shit ... Кстати Спасибо за помощь ур другу – Noman

+0

если место null я умеет видеть ... но не смог увидеть текст значка ниже ... может сказать, что мне нужно отображать и значок и текст ... –

2

Видимость значка (вместе с меткой) на вкладке зависит от целевого устройства и версии платформы Android.

У меня был более глубокий взгляд на эту проблему, и мы добавили более подробную информацию и решение по вашему другому (совершенно аналогичному) вопросу об этой проблеме; Его можно найти здесь:

https://stackoverflow.com/a/11379708/414581

0

Добавление этого в AndroidManifest.xml решить эту проблему.

<application 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@android:style/Theme.NoTitleBar"> 
</application> 
Смежные вопросы