【问题标题】:Change Color of Action Bar Title Android更改操作栏标题的颜色 Android
【发布时间】:2015-02-03 04:23:57
【问题描述】:

我正在编写一个 android 应用程序,我试图通过单击按钮来更改操作栏标题的颜色。当我点击按钮时,虽然我传递了黄色的颜色代码,但标题会被隐藏。 这是我的 MainActitvity.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);
}

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

【问题讨论】:

标签: android


【解决方案1】:
actionBar.setBackgroundDrawable(new ColorDrawable(0xff00DDED));
actionBar.setDisplayShowTitleEnabled(false);  // required to force redraw
actionBar.setDisplayShowTitleEnabled(true);

【讨论】:

  • 它将整个操作栏转换为青色。并且标题仍然没有显示。
【解决方案2】:
    int titleId=Resources.getSystem().getIdentifier("action_bar_title", "id", "android");
    TextView yourTextView = (TextView)findViewById(titleId); 
    yourTextView.setTextColor(getResources().getColor(R.color.white));

【讨论】:

    【解决方案3】:

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

    按照以下步骤操作:

    1.获取 action_bar_title 的 ID

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

    2。现在您可以将 ID 与 TextView 一起使用

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

    就是这样。

    【讨论】:

      最近更新 更多