Android操作栏标题的字体更改将在方向更改时恢复为默认值

时间:2014-04-30 16:06:06

标签: android android-actionbar android-fonts

下面的代码使标题栏变为红色和Roboto-Regular字体,代码正常工作但是当方向更改时,标题将转到默认属性,白色和默认字体。 如果我删除"活动"中的配置更改清单然后onCreate将被调用,即使在方向改变后字体也会是红色,但我需要配置更改监听器。

@Override
protected void onCreate(Bundle savedInstanceState) {

....

  Typeface Roboto_Regular = Typeface.createFromAsset(getAssets(),"fonts/Roboto-Regular.ttf");
  int titleId = getResources().getIdentifier("action_bar_title", "id","android");
  TextView title = (TextView) findViewById(titleId);
  title.setTypeface(Roboto_Regular);
  title.setTextColor(getResources().getColor(android.R.color.holo_red_dark));

}


@Override
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  Typeface Roboto_Regular = Typeface.createFromAsset(getAssets(),"fonts/Roboto-Regular.ttf");
  int titleId = getResources().getIdentifier("action_bar_title", "id","android");
  TextView menuTitle = (TextView) findViewById(titleId);
  menuTitle.setTypeface(Roboto_Regular);
  menuTitle.setTextColor(getResources().getColor(android.R.color.holo_red_dark));
  invalidateOptionsMenu();
}

并在清单中

<activity
android:name="com.example.fontexperiment.MainActivity"
android:configChanges="orientation|screenSize"
android:label="@string/app_name" >
  

-------------更新了更多信息

android source code

如果我们阅读上面的链接,可以发现android:id="@+id/action_bar_title"是android在标题布局文件中的含义。 我检查了布局 - 土地,没有单独的布局用于景观的情况。所以动作栏标题的id是一样的。

在我的代码中,当我做

时,我确实得到一个空例外
getResources().getIdentifier("action_bar_title", "id","android")

所以操作栏标题是正确的,但效果没有发生。

在结束或开始之后是否会调用onConfigurationChanged()?如果在开始时,那么android可能会将标题设置为默认值。

1 个答案:

答案 0 :(得分:0)

如果您需要在方向更改时保持相同的操作栏title color,我建议您使用自己的文字颜色创建Custom Theme,并将其设置为清单中的Activity。< / p>

Changing ActionBar Title Text Color

上查看此答案