4

私はリブランドしているタブレットアプリケーションを持っているので、ユーザーのタイプに基づいて複数のテーマがあります。

現在適用されているテーマの名前を見つけたいのですが、そのテーマに基づいて、バックエンドの機能を変更できます。

いくつかの画像リソースを動的に設定する必要があります。これは、正しいテーマリソース(R.style.redtheme)を渡す限り問題ありませんが、これを動的に設定したいと思います。

TypedArray a = getTheme().obtainStyledAttributes(R.style.redtheme, new int[] {aTabResource.mDrawableAttrId});

スタイリングを行うために、カスタム属性を作成してから、スタイルでそれらをオーバーライドします。

テーマを取得する簡単な方法がない場合は、設定を保存します。

4

1 に答える 1

9

パッケージマネージャーは、かなりの量のメタデータにアクセスできます。

次のようにアクセスできます。

int theme = 0; //0==not set
try 
{
    String packageName = getClass().getPackage().getName();
    PackageInfo packageInfo = getPackageManager().getPackageInfo(packageName, PackageManager.GET_META_DATA);
    theme = packageInfo.applicationInfo.theme;
}
catch (Exception e) 
{ 
    e.printStackTrace();
}

これが実行されると、テーマにはスタイルリソースが含まれます。

于 2012-03-02T17:23:42.453 に答える