1

によって継承された抽象によって継承UltraSuperActivityされた抽象があります。現在のアクティビティのレイアウトを追加するSuperActivityMyActivityOnCreateSuperActivitysetContentView(R.layout.activity_super);HorizontalScrollLayout

に次のようなレイアウトを追加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ます。MyButtonボタンにスタイルを追加するactivity_layoutと機能しますが、セットアップテーマを使用しない理由がわかりません。

4

2 に答える 2

4

アクティビティのテーマを取得しているのではなく、アプリケーションのテーマを取得していると思います。この場合、これがデフォルトである可能性が最も高いです。getApplicationContext() を getContext() (または「これ」) に置き換えてみてください。よくある間違いは、アプリケーション コンテキストとアクティビティ コンテキストを同じものと考えることです。

于 2013-07-06T12:08:24.267 に答える
0

inflate適切な方法を使用していません。inflate(int, ViewGroup, boolean)ViewGroup が null でない場所を使用する必要があります。この問題の詳細については、次の記事をお読みください。

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

于 2013-07-06T11:40:56.633 に答える