setTheme的哪个上下文?

时间:2013-01-15 16:42:39

标签: android actionbarsherlock

我在我的应用上使用了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上看到日志。但主题尚未确定。标签字体颜色始终为黑色! 任何人都可以帮我设置主题,这样我就可以通过编程方式更改标签上的文字颜色

1 个答案:

答案 0 :(得分:0)

另一种方法是不覆盖配置更改(对于活动)并检查片段创建的方向,如下所示:

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d(this.getClass().getSimpleName(), "onCreate()");

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
      getActivity().setTheme(android.R.style.Theme_Holo_Light);
    } else {
      getActivity().setTheme(android.R.style.Theme_Holo);
    }
  }