下面的代码使标题栏变为红色和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:id="@+id/action_bar_title"
是android在标题布局文件中的含义。
我检查了布局 - 土地,没有单独的布局用于景观的情况。所以动作栏标题的id是一样的。
在我的代码中,当我做
时,我确实得到一个空例外getResources().getIdentifier("action_bar_title", "id","android")
所以操作栏标题是正确的,但效果没有发生。
在结束或开始之后是否会调用onConfigurationChanged()?如果在开始时,那么android可能会将标题设置为默认值。
答案 0 :(得分:0)
如果您需要在方向更改时保持相同的操作栏title color
,我建议您使用自己的文字颜色创建Custom Theme
,并将其设置为清单中的Activity
。< / p>