1

我有抽象UltraSuperActivity继承的抽象SuperActivity继承的MyActivity。在我调用OnCreate的哪个包含中,我添加了当前活动的布局SuperActivitysetContentView(R.layout.activity_super);HorizontalScrollLayout

我在中添加这样的OnCreate布局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);

Inflater 设置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. 如果我在按钮中添加MyButton样式,activity_layout它可以工作,但我不明白为什么它不使用设置主题。

4

2 回答 2

4

我猜你没有得到你的活动主题,而是你得到了应用程序主题,在这种情况下,这很可能是默认的。尝试用 getContext()(或“this”)替换 getApplicationContext()。一个常见的错误是认为 Application Context 和 Activity Context 是同一个东西。

于 2013-07-06T12:08:24.267 回答
0

你没有使用正确的inflate方法。您应该使用inflate(int, ViewGroup, boolean)ViewGroup 不为空的位置。阅读本文以获取有关此问题的更多信息:

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

于 2013-07-06T11:40:56.633 回答