Skip to content

Most visited

Recently visited

navigation

リソースへのアクセス

クイックビュー

  • リソースは、R.java の整数を使うコード(R.drawable.myimage など)を使用して参照できます。
  • リソースは、特殊な XML 構文(@drawable/myimage など)を使用して参照できます。
  • さらに、Resources のメソッドを使用すると、アプリ リソースにアクセスできます。

キークラス

  1. Resources

このドキュメントの内容

  1. コードからリソースにアクセスする
  2. XML からリソースにアクセスする
    1. スタイル属性を参照する
  3. プラットフォーム リソースにアクセスする

関連ドキュメント

  1. リソースの提供
  2. リソースのタイプ

アプリケーションでリソースを提供すると(詳細はリソースの提供をご覧ください)、リソース ID を参照することよってリソースを適用できるようになります。 リソース ID はすべてプロジェクトの R クラスで定義します。これは aapt ツールが自動的に生成します。

アプリケーションをコンパイルすると、aaptR クラスを生成します。このクラスには、res/ ディレクトリにある全リソースのリソース ID が含まれます。 リソースのそれぞれのタイプに対して、R サブクラス(例: ドローアブル リソースの場合はすべて R.drawable)があり、そのタイプのそれぞれのリソースには、静的整数(例: R.drawable.icon)があります。 この整数がリソース ID であり、リソースを取得するのに使用できます。

R クラスではリソース ID が指定されていますが、リソース ID を探す必要はありません。 リソース ID は常に次のように構成されます。

リソースにアクセスするには次の 2 つの方法があります。

コードでリソースにアクセスする

リソース ID をメソッド パラメータとして渡すことで、コード内でリソースを使用できます。たとえば、setImageResource() を使って、ImageViewres/drawable/myimage.png リソースを使用するように設定できます。

ImageView imageView = (ImageView) findViewById(R.id.myimageview);
imageView.setImageResource(R.drawable.myimage);

さらに、Resources のメソッドを使用して、個々のリソースを取得することもできます。getResources() を使用すると、そのインスタンスを取得できます。

構文

次の構文を使用して、コード内のリソースを参照します。

[<package_name>.]R.<resource_type>.<resource_name>

リソースタイプの詳細やそれらの査証方法については、リソースのタイプをご覧ください。

使用例

多くのメソッドでリソース ID パラメータを使うことができ、Resources のメソッドを使用すればリソースを取得できます。 Resources のインスタンスは、Context.getResources() で取得できます。

次は、コードのリソースにアクセスする例です。

// Load a background for the current screen from a drawable resource
getWindow().setBackgroundDrawableResource(R.drawable.my_background_image) ;

// Set the Activity title by getting a string from the Resources object, because
//  this method requires a CharSequence rather than a resource ID
getWindow().setTitle(getResources().getText(R.string.main_title));

// Load a custom layout for the current screen
setContentView(R.layout.main_screen);

// Set a slide in animation by getting an Animation from the Resources object
mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
        R.anim.hyperspace_in));

// Set the text on a TextView object using a resource ID
TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello_message);

警告: R.java ファイルは、プロジェクトのコンパイル時に aapt ツールによって生成されるため、手動で修正しないでください。 変更した場合は、次回のコンパイルの際に上書きされます。

XML からリソースにアクセスする

一部の XML 属性や要素の値は、既存のリソースへの参照を使用して定義できます。 通常は、ウィジェットに文字列や画像を提供するレイアウト ファイルを作成する場合に、この方法を使用します。

たとえば、レイアウトに Button を追加する場合は、次のように、ボタンテキストの文字列リソースを使用します。

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/submit" />

構文

次の構文を使用して、XML リソース内のリソースを参照します。

@[<package_name>:]<resource_type>/<resource_name>

リソースタイプの詳細やそれらの査証方法については、リソースのタイプをご覧ください。

使用例

場合によっては、XML の値にリソースを使用する必要がありますが(ウィジェットにドローアブル画像を適用するような場合など)、単純な値を受け入れる XML の任意の場所にリソースを使用できます。 たとえば、カラーリソース文字列リソースを持つ、次のようなリソースがあるとします。

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <string name="hello">Hello!</string>
</resources>

これらのリソースを次のようなレイアウト ファイルに使用して、テキストカラーとテキストの文字列を設定できます。

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@color/opaque_red"
    android:text="@string/hello" />

この場合、リソースは独自のパッケージ内のものであることから、リソースの参照でパッケージ名を指定する必要はありません。 システム リソースを参照するには、パッケージ名を含める必要があります。 次に例を示します。

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@android:color/secondary_text_dark"
    android:text="@string/hello" />

注: アプリケーションを他の言語にローカライズできるように、常に文字列リソースを使用するようにします。代替リソース(ローカライズされた文字列など)の作成方法についての詳細は、代替リソースを提供するをご覧ください。 アプリケーションを他の言語にローカライズするための詳細なガイドは、ローカライズをご覧ください。

XML でリソースを使用すれば、エイリアスを作成することもできます。たとえば、別のドローアブル リソースのエイリアスとなる、次のようなドローアブル リソースを作成できます。

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/other_drawable" />

これは冗長のように思われますが、代替リソースを使用する場合に大変便利です。詳細は、エイリアス リソースを作成するをご覧ください。

スタイル属性を参照する

スタイル属性リソースを使用すると、現在適用されているテーマの属性の値を参照できます。 スタイル属性を参照すれば、ハードコードした値を指定しなくても、現在のテーマで与えられる標準的なバリエーションに合わせてスタイルを設定して、UI 要素の外観をカスタマイズできます。 本質的に、スタイル属性を参照するというのは、「現在のテーマのこの属性で定義されるスタイルを使用する」という意味になります。

属性スタイルを参照する場合、名前構文は通常のリソース形式とほぼ同じですが、アットマーク(@)の代わりに疑問符(?)を使用します。リソースタイプの部分は省略可能です。 例:

?[<package_name>:][<resource_type>/]<resource_name>

たとえば、次の例では、属性を参照して、テキスト カラーをシステム テーマの「プライマリ」テキスト カラーに合わせて設定します。

<EditText id="text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="?android:textColorSecondary"
    android:text="@string/hello_world" />

ここでは、android:textColor 属性で、現在のテーマのスタイル属性の名前を指定しています。 これで Android は、android:textColorSecondary スタイル属性に適用された値を、このウィジェットの android:textColor の値として使用できるようになります。 このコンテキストで属性リソースが必要なことはシステム リソース ツールで認識されているため、タイプ(ここでは ?android:attr/textColorSecondary)を明示的に指定する必要はなく、attr タイプは除外できます。

プラットフォーム リソースにアクセスする

Android には、スタイル、テーマ、レイアウトといった多数の標準的なリソースが用意されています。これらのリソースにアクセスするには、android パッケージ名でリソース参照を修飾します。 たとえば、Android には、ListAdapter のリストアイテムに使用できるレイアウト リソースが用意されています。

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myarray));

この例では、simple_list_item_1 は、プラットフォームによって ListView のアイテム向けに定義されるレイアウト リソースです。 リストアイテムに独自のレイアウトを作成する代わりに、このレイアウトを使用できます。 詳細については、List View のデベロッパー ガイドをご覧ください。

This site uses cookies to store your preferences for site-specific language and display options.

Hooray!

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a one-minute survey?
Help us improve Android tools and documentation.