Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改操作栏标题的颜色_Android - Fatal编程技术网

Android 更改操作栏标题的颜色

Android 更改操作栏标题的颜色,android,Android,我正在编写一个android应用程序,在这个程序中,我试图通过点击按钮来改变动作栏标题的颜色。只要我点击按钮,标题就会被隐藏,尽管我正在传递黄色的色码。 这是我的mainActivity.java代码 Button B; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity

我正在编写一个android应用程序,在这个程序中,我试图通过点击按钮来改变动作栏标题的颜色。只要我点击按钮,标题就会被隐藏,尽管我正在传递黄色的色码。 这是我的mainActivity.java代码

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();
    }
}

ActionBar标题ID是隐藏的,或者换句话说,它是内部的,通常无法访问它。您可以使用Resources.getIdentifier引用它

请执行以下步骤:

1。抓取操作栏标题的ID

int titleId = getResources().getIdentifier("action_bar_title", "id", "android");
2。现在,您可以将ID与文本视图一起使用

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

仅此而已。

尝试遵循此教程,它将有助于将整个动作栏转换为青色。标题仍然没有显示。
int titleId = getResources().getIdentifier("action_bar_title", "id", "android");
TextView abTitle = (TextView) findViewById(titleId);
abTitle.setTextColor(colorId);