2015-03-03 3 views
1

Я использую TabHost в своем коде, и мне интересно, как я могу изменить цвет текста? Я думал, что это будет что-то делать с XML, но при взгляде на него я не думаю, что это:Использование TabHost, как изменить цвет текста?

public class HealthyEating extends TabActivity{ 
Resources res; 
TabHost tabHost; 
Intent intent; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_healthy_eating); 

    res = getResources(); 
    tabHost = getTabHost(); 
    TabHost.TabSpec spec; 

    intent = new Intent().setClass(this, BreakfastRecipe.class); 
    spec = tabHost.newTabSpec("Breakfast Recipes").setIndicator("Breakfast Recipes") 
      .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, LunchRecipe.class); 
    spec = tabHost.newTabSpec("Lunch Recipes").setIndicator("Lunch Recipes") 
      .setContent(intent); 
    tabHost.addTab(spec); 
    tabHost.setCurrentTab(0); 


} 

ответ

0

Вы можете изменить его с помощью заголовка вкладки TextView. Для получения дополнительной информации см: использование

Android: Change Tab Text Color Programmatically

Примера для вас, имеющего цвета текста красного будут:

import android.app.TabActivity; 
import android.content.Intent; 
import android.content.res.Resources; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.widget.TabHost; 
import android.widget.TextView; 

import com.example.myproject.R; 

public class HealthyEating extends TabActivity { 
    Resources res; 
    TabHost tabHost; 
    Intent intent; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_healthy_eating); 

     res = getResources(); 
     tabHost = getTabHost(); 
     TabHost.TabSpec spec; 

     intent = new Intent().setClass(this, BreakfastRecipe.class); 
     spec = tabHost.newTabSpec("Breakfast Recipes").setIndicator("Breakfast Recipes") 
       .setContent(intent); 
     tabHost.addTab(spec); 

     intent = new Intent().setClass(this, LunchRecipe.class); 
     spec = tabHost.newTabSpec("Lunch Recipes").setIndicator("Lunch Recipes") 
       .setContent(intent); 
     tabHost.addTab(spec); 
     tabHost.setCurrentTab(0); 

     int titleColor = Color.RED; //<-- change this to the color you want the title text to be 
     for(int i = 0;i < tabHost.getTabWidget().getChildCount(); i++) 
     { 
      TextView textView = (TextView)tabHost.getTabWidget().getChildAt(i).findViewById(android.R.id.title); 
      textView.setTextColor(titleColor); 
     } 
    } 
} 

Цикл for проходит через каждый из вкладок, которые вы добавили к TabHost и получает доступ к TextView, который связан с меткой заголовка. Метод setTextColor используется для изменения цвета текста по вашему желанию (в этом примере красный). Возможно, стоит проверить документы для TabWidget.

Примечание, в частности, дополнительные операторы импорта, что вам нужно: import android.widget.TextView и import android.graphics.Color

Этот пример работал для меня со следующим activity_healthy_eating файла:

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@android:id/tabhost"> 

    <LinearLayout 
     android:id="@+id/LinearLayout01" 
     android:orientation="vertical" 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent"> 
     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_height="wrap_content" 
      android:layout_width="fill_parent" 
      android:layout_marginBottom="5dip"> 
     </TabWidget> 
     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_height="fill_parent" 
      android:layout_width="fill_parent"> 
     </FrameLayout> 
    </LinearLayout> 
</TabHost> 

Если вы получаете какие-либо ошибки, пожалуйста, размещаете их, и я попытаюсь обратиться к ним.

Более подробная информации о Color (docs) в Android можно найти here

Интерактивного инструмент для поиска цветового кода шестигранных вы после банки нашла here.

+0

Довольно новый для Java, я пытался осуществить это, и это действительно не имеет большого смысла для меня, я боюсь:/ –

+0

Вы должны быть в состоянии копировать/вставить из кода в моем отредактированный ответ. Если это не сработает, сообщите мне, в чем проблема, и я постараюсь помочь. – Pete

0
TabHost tabhost = getTabHost(); 
for(int i=0;i<tabhost.getTabWidget().getChildCount();i++) 
{ 
    TextView tv = (TextView) tabhost.getTabWidget().getChildAt (i).findViewById(android.R.id.title); 
    tv.setTextColor(Color.parseColor("#000000")); 
} 
Смежные вопросы