Android 无法在定向后编辑操作栏标题
我需要开发一个应用程序,它可以改变动作栏标题的风格动态 在中,尝试通过以下方式访问操作栏标题来实现此目的:Android 无法在定向后编辑操作栏标题,android,orientation,android-actionbar-compat,onconfigurationchanged,Android,Orientation,Android Actionbar Compat,Onconfigurationchanged,我需要开发一个应用程序,它可以改变动作栏标题的风格动态 在中,尝试通过以下方式访问操作栏标题来实现此目的: (TextView) findViewById( Resources.getSystem().getIdentifier( "action_bar_title", "id"
(TextView) findViewById(
Resources.getSystem().getIdentifier(
"action_bar_title",
"id",
"android"
)
);
然后我像普通文本视图一样编辑样式
在移动电话改变方向之前,这似乎可以正常工作
然而,在方向改变之后,我仍然可以通过上述代码获得TextView(即不返回null),但是对TextView的更改不再反映出来 有人知道为什么吗 ============================================================== 感谢您的快速回复,我用于修改TextView的代码:
@Override
public void onConfigurationChanged( Configuration newConfig )
{
super.onConfigurationChanged( newConfig );
int titleId = Resources.getSystem().getIdentifier( "action_bar_title", "id", "android" );
TextView title = (TextView) activity.findViewById( titleId );
title.setTextColor( Color.parseColor("#ff0000") );
title.setBackgroundColor( Color.parseColor("#00ff00") );
title.setText( ""+ new Random().nextInt(9999) );
}
方向更改后,将触发方法OnConfiguration changed。 但是,操作栏标题文本视图不再反映 我还可以使用titleView.getText().toString()来获取前面指定的正确文本 但是,操作栏标题没有任何可见的更改。
我觉得我提取的文本视图不是操作栏标题。在方向更改后,应用程序资源刷新,指针将无法指向新标题文本视图 因此,对textview进行黑客攻击以改变其样式和内容不是一个好方法。使用android.text.SpannableString可以实现相同的效果,但在定向后保持样式
SpannableString titleSpan = new SpannableString(getString(R.string.app_name));
titleSpan.setSpan(new TypefaceSpan(this, titleTypeface), 0, titleSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
getSupportActionBar().setTitle(titleSpan);
参考资料:还应考虑添加用于修改TextView的代码。。。