2013-07-06 69 views
0

我有抽象UltraSuperActivity繼承的抽象繼承MyActivity。在 OnCreate我打電話setContentView(R.layout.activity_super);包含HorizontalScrollLayout到我添加當前活動的佈局Android:以編程方式添加布局忽略主題

OnCreateMyActivity添加布局是這樣的:

LinearLayout activity_layout = (LinearLayout)inflater.inflate(R.layout.activity_layout, null); 
HorizontalScrollView application_contents = (HorizontalScrollView)findViewById(R.id.application_contents); 
HorizontalScrollView.LayoutParams cp = new HorizontalScrollView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
some more code... 
application_contents.addView(activity_layout, cp); 

吹氣成立於UltraSuperActivity爲靜態:

if(inflater == null){ 
    inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    inflater.setFactory(CustomViewFactory.getInstance()); // we add our factory for our views 
} 

我正在使用MyButton作爲主題給每個按鈕的樣式。這在activity_super佈局中起作用,但它在activity_layout中不起作用,並且它顯示爲常見的Android按鈕。主題設置在AndroidManifest.xml。如果我在activity_layout中添加MyButton樣式到它的按鈕,但我不明白爲什麼它不使用設置主題。

回答

2

我猜你沒有得到你的活動主題,而你所得到的應用主題,在這種情況下,最有可能是默認的。嘗試用getContext()(或「this」)替換getApplicationContext()。一個常見的錯誤是認爲應用程序上下文和活動上下文是一回事。

+1

inflater =(LayoutInflater)getBaseContext()。getSystemService(Context.LAYOUT_INFLATER_SERVICE);做了魔術:)謝謝 – Ragnar

0

您沒有使用正確的inflate方法。您應該使用inflate(int, ViewGroup, boolean),其中ViewGroup不爲空。閱讀這篇文章,對此事的更多信息:

http://www.doubleencore.com/2013/05/layout-inflation-as-intended/

+0

我改變了充氣器使用LinearLayout activity_layout =(LinearLayout)inflater.inflate(R.layout.activity_layout,(ViewGroup)findViewById(R.id.application_contents),false);但它沒有任何作用,我做錯了嗎? – Ragnar

相關問題