リソースディクショナリの使用

リソースディクショナリは、リソースを指すリソースIDのコレクションです。リソースディクショナリは、任意のノードに追加できます。

デフォルトで、リソースディクショナリは次の場所に存在します:

  • Screen ノード

  • すべてのプレハブのルートノード

ノードは、自身のリソースディクショナリおよび祖先ノードで定義されたリソースディクショナリ内のすべてのリソースIDにアクセスできます。リソースプロパティの値としてリソースIDを割り当てることができ、それらは Kanzi Studio で「ResourceID → Resource」という構文で表示されます。

リソースを任意のノードにローカル化することができます。ノードのスコープにリソースを追加することで、そのノードのリソース辞書にリソースIDエントリを追加します。リソースIDは、リソースが使用される場所からリソースを抽象化する識別子です。

ノードにリソースディクショナリを追加する

ノードにリソースディクショナリを追加するには、Node Tree Alt を押しながら右クリック ノードを選択し、Resource Dictionary を選択します。

../../_images/add-resource-dictionary.png

リソースディクショナリの内容を表示する

リソースディクショナリの内容を表示するには:

  1. Node Tree で、Dictionaries に表示したいリソースディクショナリのコンテンツを持つノードを選択します。Dictionaries にリストされているリソースは、色分けされています。

    • 白いタイプは、選択されたリソース辞書からの有効なリソースを示します。

      例えば、以下の画像では、Screen ノード内のすべてのリソースが有効です。

      ../../_images/dictionaries-white-type.png
    • 灰色のイタリック体は、他のリソースディクショナリからのリソースによってオーバーライドされるリソースを示します。

      例えば、以下の画像では、Screen ノードのリソースディクショナリ内のボディテキストリソースの値が、警告メッセージノードのリソースディクショナリ内のボディテキストリソースによって上書きされています。

      ../../_images/dictionaries-gray-italics-type.png
    • オレンジ色のタイプはエイリアスを示します。エイリアスの使用 を参照してください。

      例えば、以下の画像では、Media は Screen/RootPage/Media ノードを指すエイリアスです。

      ../../_images/dictionaries-orange-type.png
    • 白い文字が薄い灰色の背景に表示されている場合、それは選択されたロケールまたはテーマで、ローカライゼーションテーブルまたはテーマグループで設定されたデフォルト値を使用しているリソースを示しています。ローカライズ (Localization) と アプリケーションのテーマ設定 を参照してください。

      例えば、以下の画像では、Localization Table の en-US ロケールが、そのローカライゼーションテーブルで定義された Hello テキストリソースIDのデフォルト値を使用しています。

      ../../_images/dictionaries-white-type-gray-background.png

ロケールとテーマの表示およびアクティブ化

ロケールとテーマを表示およびアクティブ化するには、Dictionaries で Locales and Themes をクリックして、ローカライゼーションテーブルとテーマグループの表示を有効にし、各ローカライゼーションテーブルとテーマグループについて、Preview で表示したいロケールとテーマを選択します。

../../_images/activate-theme-dictionaries.png

リソースディクショナリにリソースを追加する

リソースディクショナリにリソースを追加するには:

  1. ノードにリソースディクショナリを追加します。ノードにリソースディクショナリを追加する を参照してください。

  2. Dictionaries で + Add Resource をクリックし、選択します:

    • Create を選択し、作成したいリソースのタイプを選択します。

    • Add Existing を選択し、プロジェクト内に既に存在するリソースを選択します。

    ../../_images/add-resource1.png

リソースディクショナリ内のリソースにkzb URLを使用する

別の Kanzi Studio プロジェクト内のリソースを指すために、kzb URLを使用できます。

リソースディクショナリ内のリソースにkzb URLを使用するには:

  1. Dictionaries で、kzb URL を使用したいリソースのセルをダブルクリックし、ドロップダウンメニューで < URL > を選択します。

    ../../_images/select-url.png
  2. セルに、使用したいリソースのkzb URLを入力してください。

    例えば、別の Kanzi Studio プロジェクトからフォントを使用するには、そのフォントを指すkzb URLを入力します。

    ../../_images/set-url-for-resource.png

APIでリソースディクショナリを使用する

リソースディクショナリを作成するには:

// Create a resource dictionary.
ResourceDictionarySharedPtr dictionary = ResourceDictionary::create(domain, "Dictionary");

リソースディクショナリにコンテンツを追加するには:

// Add resources to a resource dictionary.
dictionary->add(ResourceID("red icon"), texture);
dictionary->add(ResourceID("blue icon"), "kzb://my_project/Textures/Blue Icon");

リソースディクショナリからリソースを取得するには:

// Acquire resources from a resource dictionary.
ResourceSharedPtr redIcon = dictionary->acquire(ResourceID("red icon"));
ResourceSharedPtr blueIcon = dictionary->acquire(ResourceID("blue icon"));

ノードのリソースディクショナリを変更するには:

// Change the resource dictionary of a node.
node->setResourceDictionary(dictionary);

ノードの既存のリソースディクショナリを拡張するには:

// Extend the existing resource dictionary of a node with a nested resource dictionary.
node->addResourceDictionary(dictionary);

詳細については、ResourceDictionary クラスを参照してください。

関連項目

リソース管理 (Resource management)

ローカライズ (Localization)

アプリケーションのテーマ設定