【发布时间】:2013-01-16 23:49:54
【问题描述】:
我在我的应用中使用带有标签的 actionbarsherlock。 在选项卡上必须将文本颜色更改为黑色或白色。根据我的应用程序的方向。在风景上我必须换成白色。因为我的操作栏是黑色的。当我更改为纵向时,我必须设置为黑色,因为我的标签背景是白色的。 但是您可以以编程方式使用来更改颜色。所以我用这个技巧来改变主题。
当我的清单上的方向更改时,我已禁用重新加载选项
android:configChanges="keyboardHidden|orientation|screenSize">
这行得通。 现在我在我的片段上实现它:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{
getSherlockActivity().setTheme(android.R.style.Theme_Holo_Light);
Log.e("Portai", "port");
}
else
{
getSherlockActivity().setTheme(android.R.style.Theme_Holo);
Log.e("land", "alnd");
}
}
我可以在 logcat 上看到日志。但是主题是确定的。标签字体颜色始终为黑色! 任何人都可以帮我设置主题,以便我可以通过编程方式更改选项卡上的文本颜色
【问题讨论】:
-
只有在极少数情况下才应该自己处理配置更改。你最好在你的
styles.xml中定义一个新主题,在一个符合横向配置的资源目录中(如/values-land或/values-v11-land)。 -
主题需要在屏幕上创建布局之前定义,这意味着如果您禁用活动的重新创建,您将无法拥有新主题。听从 Karakuri 的建议。
-
谢谢,就是这样!但我怎么能做到我的应用程序不刷新自己?这是一个 SherlockFragment 并且 onCreatedView 再次加载。这不是我想要的
-
你试过我的答案了吗?如果对你有帮助,请告诉我。