2014-12-05 100 views
-1

我正在编写一个Android应用程序,我试图通过单击按钮来更改操作栏标题的颜色。只要我点击按钮,虽然我传递了YELLOW的颜色代码,但标题却隐藏起来。 这里是我的MainActitvity.java更改操作栏标题的颜色Android

Button B; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    B = (Button) findViewById(R.id.button1); 
    B.setOnClickListener(this); 
} 


public void onClick(View v) { 
    android.app.ActionBar actionBar = getActionBar(); 
    Internal.setActionBarTitleColor(actionBar, 256); 
} 

的代码Internal.java

public static void setActionBarTitleColor(android.app.ActionBar actionBar, int titleColor) { 
    if(actionBar == null) 
     return; 

    try { 
     Field actionViewField = actionBar.getClass().getDeclaredField("mActionView"); 
     actionViewField.setAccessible(true); 
     Object actionView = actionViewField.get(actionBar); 
     if(actionView == null) 
      return; 

     Field titleTextField = actionView.getClass().getDeclaredField("mTitleView"); 
     titleTextField.setAccessible(true); 
     TextView titleText = (TextView)titleTextField.get(actionView); 

     if(titleText != null) 
      titleText.setTextColor(titleColor); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

尝试遵循此tutorail它将帮助http://stackoverflow.com/questions/9019512/how-can-i-change-the-touch-effect-color-of-the-actionbar-in-android-3 -0-and-high https://developer.android.com/training/basics/actionbar/styling.html – 2014-12-05 03:55:49

回答

0
actionBar.setBackgroundDrawable(new ColorDrawable(0xff00DDED)); 
actionBar.setDisplayShowTitleEnabled(false); // required to force redraw 
actionBar.setDisplayShowTitleEnabled(true); 
+0

它将整个Action Bar转换为青色。而标题仍未显示。 – 2014-12-05 04:41:01

0
int titleId=Resources.getSystem().getIdentifier("action_bar_title", "id", "android"); 
    TextView yourTextView = (TextView)findViewById(titleId); 
    yourTextView.setTextColor(getResources().getColor(R.color.white)); 
0

的动作条标题ID被隐藏,或者换句话说,它的内部和访问它可以通常不会做。您可以使用Resources.getIdentifier来引用它。

按照以下步骤:

1.抓住ID为action_bar_title

int titleId = getResources().getIdentifier("action_bar_title", "id", "android"); 

2.现在你可以使用的ID与一个TextView

TextView abTitle = (TextView) findViewById(titleId); 
abTitle.setTextColor(colorId); 

就这样。