我有UltraSuperActivity
继承的抽象SuperActivity
继承的抽象MyActivity
。在OnCreate
的{{1}}中,我致电SuperActivity
,其中包含setContentView(R.layout.activity_super);
,我在其中添加了当前活动的布局
我在HorizontalScrollLayout
的{{1}}中添加了这样的布局:
OnCreate
Inflater在MyActivity
中设置为静态:
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
中不起作用,并且显示为常用的Android按钮。主题在activity_super
中设置。如果我在activity_layout
中将AndroidManifest.xml
样式添加到按钮,则可以使用,但我不明白它为什么不使用设置主题。
答案 0 :(得分:4)
我猜你没有得到你的活动主题,而是你得到了应用程序主题,在这种情况下很可能是默认的。尝试用getContext()(或" this")替换getApplicationContext()。一个常见的错误是认为应用程序上下文和活动上下文是一回事。
答案 1 :(得分:0)
您没有使用正确的inflate
方法。您应该使用ViewGroup不为null的inflate(int, ViewGroup, boolean)
。阅读本文以获取有关此事的更多信息:
http://www.doubleencore.com/2013/05/layout-inflation-as-intended/