2013-01-15 34 views
0

我用標籤的actionbarsherlock我的應用程序。 在標籤是必須更改爲黑色或白色的文字顏色。根據我的應用程序的方向。它在風景上,我必須變成白色。因爲我的操作欄是黑色的。當我更改爲肖像時,我必須將其設置爲黑色,因爲我的標籤背景爲白色。 但是你可以通過編程來改變顏色。所以我使用這個技巧來改變主題。setTheme的上下文是什麼?

我已經禁用了重裝選項時,通過

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的。但主題沒有設定。標籤字體顏色始終爲黑色! 誰能幫我setTheme這樣我就可以改變標籤編程

+3

處理配置更改自己的東西,你應該只在極少數情況下做的。你是合格的景觀配置(如'/價值觀land'或'/值-V11-land')的資源目錄最好定義一個新的主題在'styles.xml'。 – Karakuri

+1

主題需要在屏幕上,這意味着如果你禁用了活動的娛樂,你不能有一個新的主題上創建佈局之前定義。按照Karakuri的建議。 – Murphy

+0

謝謝,這就是!但我怎麼做,我的應用程序不刷新自己?這是一個SherlockFragment,並且onCreatedView再次被加載。這心不是我想要什麼 – StefMa

回答

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); 
    } 
    }