2014-06-23 131 views
2

如何更改android的选项卡中的文本颜色,任何人都帮我出:更改Android标签栏的文本颜色未选择

当标签被选中的文本颜色为红色就像你看到的图像:

enter image description here

并且当标签是未选择然后作为图像中提到的文本将是白色:

enter image description here

这是我Tab_Car_Shop.java类:

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


    final TabHost mTabHost = getTabHost(); 
    createHomeTab(mTabHost); 
// createContactTab(mTabHost); 
    createnotificationTab(mTabHost); 
// createEmergencyTab(mTabHost); 
    createFavouritesTab(mTabHost); 
// createMoreTab(mTabHost); 
    createProfileTab(mTabHost); 

//  DealerEmergencyNumbers = getIntent().getExtras().getString("DealerEmergencyNumbers"); 


//  csHeader_logo = getIntent().getExtras().getString("csHeader_logo"); 




    getTabHost().setOnTabChangedListener(new OnTabChangeListener() { 


     @Override 
      public void onTabChanged(String tabId) 
      { 

       if (getTabHost().getCurrentTabTag().equals("tab_contact")) 
       { 
        UpdateList(); 

        if(csSavedDealerID == null) 
         showMessage("To benefit from the full features of this app please fill in your profile."); 
        else 
         showCutomMessage("Would you like to call for emergency assistance"); 
        final TabHost mTabHost = getTabHost(); 
        mTabHost.setCurrentTab(tabClick); 

       } 
       tabClick = getTabHost().getCurrentTab(); 


      } 
      }); 



} 



public void switchTab(int tab) 
{ 
    getTabHost().setCurrentTab(tab); 
} 

public void createHomeTab(TabHost mTabHost) 
{ 
    // Create Intent for My Info 



    Intent intent_settings = new Intent(Tab_Car_Shop.this,Car_shop_group_activity.class); 
    //intent_settings.putExtras(CarData); 

    intent_settings.putExtra("csDealerID", csDealerID); 
    intent_settings.putExtra("csMakeID","-1"); 
    intent_settings.putExtra("csMakeName","Carshop"); 
    intent_settings.putExtra("csImageUrl", "http://cmh.dealer-app.co.za/cmh_v1/images/home-cons/logo-carshop.png"); 
    intent_settings.putExtra("csHeader_logo", "http://cmh.dealer-app.co.za/cmh_v1/images/headers/carshop-header.png"); 
    intent_settings.putExtra("csAdvert","http://cmh.dealer-app.co.za/cmh_v1/images/advert/advert-carshop.gif"); 
    intent_settings.putExtra("UsedVehicleLabel","Carshop"); 
    intent_settings.putExtra("bCarShop", true); 
    intent_settings.putExtra("DealerEmergencyNumbers",""); 


// startActivity(intent_settings); 

    // mTabHost.addTab(mTabHost.newTabSpec("tab_my_info").setIndicator(language.txt_myinfo[language.language], getResources().getDrawable(R.drawable.tab_my_info)).setContent(intent_my_info)); 

    TabHost.TabSpec spec = mTabHost.newTabSpec("tab_home");   

     View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_layout, getTabWidget(), false); 

     TextView title = (TextView) tabIndicator.findViewById(R.id.tab_title); 
     title.setText("Home"); 
     // for Home text will be red 
    // title.setTextColor(Color.parseColor("#FF0000")); 
     ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon); 
     icon.setImageResource(R.drawable.tab_home); 

     spec.setIndicator(tabIndicator); 
     spec.setContent(intent_settings); 
     mTabHost.addTab(spec); 


     int height = mTabHost.getTabWidget().getChildAt(0).getLayoutParams().height; 

     //Log.e("CMH", "tab Hight " + height); 
} 


// public void createContactTab(TabHost mTabHost) 
public void createnotificationTab(TabHost mTabHost) 
{ 
    // Create Intent for My Info 

    Intent intent_settings = new Intent(Tab_Car_Shop.this, 
      Promotions.class); 

    intent_settings.putExtra("bCarShop", true); 
    intent_settings.putExtra("csHeader_logo", "http://cmh.dealer-app.co.za/cmh_v1/images/headers/carshop-header.png"); 
    // mTabHost.addTab(mTabHost.newTabSpec("tab_my_info").setIndicator(language.txt_myinfo[language.language], getResources().getDrawable(R.drawable.tab_my_info)).setContent(intent_my_info)); 

    TabHost.TabSpec spec = mTabHost.newTabSpec("tab_notifications");  

     View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_layout, getTabWidget(), false); 

     TextView title = (TextView) tabIndicator.findViewById(R.id.tab_title); 
     title.setText("Notifications"); 
     ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon); 
     icon.setImageResource(R.drawable.tab_contact); 

     spec.setIndicator(tabIndicator); 
     spec.setContent(intent_settings); 
     mTabHost.addTab(spec); 
} 

// public void createEmergencyTab(TabHost mTabHost) 
public void createFavouritesTab(TabHost mTabHost) 
{ 
    // Create Intent for My Info 


    Intent intent_settings = new Intent(Tab_Car_Shop.this, 
      Favourities.class); 

    intent_settings.putExtra("bCarShop", true); 
    intent_settings.putExtra("csHeader_logo", "http://cmh.dealer-app.co.za/cmh_v1/images/headers/carshop-header.png"); 
    intent_settings.putExtra("Previous_Activity", "More_group_activity"); 
    // mTabHost.addTab(mTabHost.newTabSpec("tab_my_info").setIndicator(language.txt_myinfo[language.language], getResources().getDrawable(R.drawable.tab_my_info)).setContent(intent_my_info)); 

    TabHost.TabSpec spec = mTabHost.newTabSpec("tab_favourites");  

     View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_layout, getTabWidget(), false); 

     TextView title = (TextView) tabIndicator.findViewById(R.id.tab_title); 
     title.setText("My favourites"); 
     ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon); 
     icon.setImageResource(R.drawable.tab_favourites); 

     spec.setIndicator(tabIndicator); 
     spec.setContent(intent_settings); 
     mTabHost.addTab(spec); 


} 


// public void createMoreTab(TabHost mTabHost) 
public void createProfileTab(TabHost mTabHost) 
{ 
    // Create Intent for My Info 

    Intent intent_settings = new Intent(Tab_Car_Shop.this, 
      MyProfile.class); 

    intent_settings.putExtra("bCarShop", true); 
    intent_settings.putExtra("csHeader_logo", "http://cmh.dealer- app.co.za/cmh_v1/images/headers/carshop-header.png"); 
    intent_settings.putExtra("Previous_Activity", "More_group_activity"); 
    // mTabHost.addTab(mTabHost.newTabSpec("tab_my_info").setIndicator(language.txt_myinfo[language.language], getResources().getDrawable(R.drawable.tab_my_info)).setContent(intent_my_info)); 

    TabHost.TabSpec spec = mTabHost.newTabSpec("tab_profile");  

     View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_layout, getTabWidget(), false); 

     TextView title = (TextView) tabIndicator.findViewById(R.id.tab_title); 
     title.setText("My profile"); 
     ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon); 
     icon.setImageResource(R.drawable.tab_profile); 

     spec.setIndicator(tabIndicator); 
     spec.setContent(intent_settings); 
     mTabHost.addTab(spec); 



} 

public void showCutomMessage(String message) 
    { 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 

     builder.setMessage(message).setCancelable(true).setPositiveButton(
       "Yes", new DialogInterface.OnClickListener() 
       { 
        public void onClick(DialogInterface dialog, int id) 
        { 

         dialog.cancel(); 


         if(csEmergencyNumber.length() <= 0 && emergencyNumberList.size() <= 0) 
         { 
          showMessage("No Emergency Number found."); 
         } 
         else if (csEmergencyNumber.length() > 0) 
         { 
          String url = "tel:" + csEmergencyNumber; 
          Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url)); 
          startActivity(intent); 
         } 
         else 
         { 
          if (emergencyNumberList.size() == 1) 
          { 
           String url = "tel:" + emergencyNumberList.get(0); 
           Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url)); 
            startActivity(intent); 
          } 
          else 
          { 
           showEmergencyNumberDialog(); 
          } 
         } 
        } 
       }).setNegativeButton(
         "No", new DialogInterface.OnClickListener() 
         { 
          public void onClick(DialogInterface dialog, int id) 
          { 

           dialog.cancel(); 

          } 
         }); 


     AlertDialog alert = builder.create(); 
     alert.setMessage(message); 


     alert.show(); 

    } 

public void showMessage(String message) 
    { 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 

     builder.setMessage(message).setCancelable(true).setPositiveButton(
       "OK", new DialogInterface.OnClickListener() 
       { 
        public void onClick(DialogInterface dialog, int id) 
        { 

         dialog.cancel(); 
        } 
       }); 


     AlertDialog alert = builder.create(); 
     alert.setMessage(message); 


     alert.show(); 

    } 

public void UpdateList() 
{ 
    try 
     { 
      emergencyNumberList.clear(); 
      jsonNumberArray = new JSONArray(DealerEmergencyNumbers.toString()); 

      SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(Tab_Car_Shop.this); 
      csSavedDealerID = app_preferences.getString("DealerID", null); 

      for(int nJasonIndex = 0; nJasonIndex < jsonNumberArray.length(); nJasonIndex++) 
      { 
       JSONObject emergencyObj =jsonNumberArray.getJSONObject(nJasonIndex); 
       String csNumber = emergencyObj.getString("EmergencyNumber"); 
       String csNumber2 = emergencyObj.getString("office_hours_num"); 
       /*Log.e("Usman String1", csNumber); 
       Log.e("Usman String2", csNumber2);*/ 
       String csMakeDealerID = emergencyObj.getString("DealerID"); 
       if(csSavedDealerID != null && csSavedDealerID.equalsIgnoreCase(csMakeDealerID)) 
       { 
        csEmergencyNumber = csNumber; 
       } 
       else 
       { 
        if(!csNumber.equals("")) 
         emergencyNumberList.add("After Hours: " + csNumber); 
        if(!csNumber2.equals("")) 
         emergencyNumberList.add("Office Hours: " + csNumber2); 
       } 

      } 

      if(emergencyNumberList.size() > 1) 
      { 
       myEmergencyAdapter =new ArrayAdapter<String> (this,android.R.layout.simple_spinner_item,emergencyNumberList); 
       myEmergencyAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      } 




     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
} 

void showEmergencyNumberDialog() 
{ 
    ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_dropdown_item, emergencyNumberList); 

    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle(""); 
    builder.setAdapter(adapter, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) 
     { 
      if (item >= 0) 
      { 
       String emergencyNumber = emergencyNumberList.get(item); 
       String[] parts = emergencyNumber.split(": "); 
       String number = parts[1]; // 034556 
       String url = "tel:" + number; 
       Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url)); 
       startActivity(intent); 
      } 

     } 
    }); 

    AlertDialog alert = builder.create(); 
    alert.show(); 
} 


} 

这是我的tab_layout.xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/tabhost" 
android:layout_width="0dip" 
android:layout_height="50dp" 
android:layout_weight="1" 
android:background="@drawable/tab_indicator" 
android:orientation="vertical" 
android:padding="5dp" > 

<ImageView 
    android:id="@+id/icon" 
    android:layout_width="25dp" 
    android:layout_height="25dp" 
    android:layout_centerHorizontal="true" /> 

<TextView 
    android:id="@+id/tab_title" 
    style="?android:attr/tabWidgetStyle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:textSize="12sp" /> 

</RelativeLayout> 

这是我的tab_home.xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- When selected, use this --> 
<item android:drawable="@drawable/img_home_up_new" 
     android:state_selected="true" > 

</item> 
<!-- When not selected, use that--> 
<item android:drawable="@drawable/img_home_new" 
    android:state_selected="false" /> 
</selector> 

,这是我tab_indicator.xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<!-- Pressed --> 
<item android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/img_bottombar_new" /> 
<item android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/img_bottombar_new" /> 
<!--<item android:state_pressed="true" android:drawable="@drawable/bottom_bar_selected" />--> 
</selector> 
+0

你为什么不这样做对图像按钮点击。点击可以更改图像源。 –

回答

3

试试这个

tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener(){ 
    @Override 
    public void onTabChanged(String id) { 
     int tab = tabHost.getCurrentTab(); 
     View v = tabHost.getTabWidget().getChildAt(tab).setBackgroundColor(Color.RED); 
    } 
}); 

你也可以看到,如果this岗位帮助。

其他替代方案是Actionbar Style generator。您可以指定您的要求,下载zip并在项目中使用。

要更改文本颜色,你可以在此给出一个尝试:

TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);   
tv.setTextColor(Color.RED); 

编辑:

可以以改变颜色为白色上的TabBar的取消选择使用此逻辑。

public void onTabChanged(String tabId) { 
    // TODO Auto-generated method stub 
    for(int i=0;i<mTabHost.getTabWidget().getChildCount();i++) 
    { 
     View view = mTabHost.getTabWidget().getChildTabViewAt(i); 
     if (view != null) { 

      // get title text view 
      TextView textView = (TextView) findViewById(R.id.tab_title); 
      textView.setTextColor(Color.WHITE); 
     } 

    } 
    title.setTextColor(Color.RED); 
} 

希望这会有所帮助。

+0

兄弟它不工作,这是给我像错误“类型不匹配:不能从空转变为看” .. –

+0

尝试删除'视图V ='和检查工作@FarhanShah我只是写它。没有时间去测试,所以。 –

+0

,我不想更改标签栏的颜色,我想更改标签栏的文字颜色。 –

4
public void onTabChanged(String tabId) { 
    // TODO Auto-generated method stub 
    for(int i=0;i<mTabHost.getTabWidget().getChildCount();i++) 
    { 
     View view = mTabHost.getTabWidget().getChildTabViewAt(i); 
     if (view != null) { 

      // get title text view 
      TextView textView = (TextView)view. findViewById(R.id.tab_title); 
      textView.setTextColor(Color.WHITE); 
     } 

    } 
    title.setTextColor(Color.RED); 
} 
+1

完全编码答案在这里不受理,请稍加解释 – Nabin

相关问题