0

私がドローアブルを持っているとしましょう:

foo.png

私のプログラムのある時点で、2つの可能な文字列キー「img_foo1」または「img_foo2」のいずれかを受け取ります。これを使用して、同じ「foo」ドローアブルを取得します。

そこで、次の方法で他の2つのリソースからドローアブルにアクセスしてみました。

<drawable name="img_foo1">@drawable/foo</drawable>
<drawable name="img_foo2">@drawable/foo</drawable>

次に、これらのキー名でgetResources()。getIdentifier()を使用できると思いましたが、これによりimg_foo1とimg_foo2のIDが得られますが、描画可能なfooのIDは得られません。

これらのリソースが参照しているリソースIDを取得する方法はありますか?

編集:

私がこれを行う理由は、私が制御できない外部ソースからこれらのキーを受け取るためです。私ができる唯一のことは、既知のキーを対応するドローアブルにマップして、正しい画像を描画することです(同じ画像が異なるキーで使用される可能性があるため)。

これは、アプリで初期化できる静的コレクションを使用して実現できますが、代わりにリソースを利用できるようにしています。

4

3 に答える 3

1

最後のパラメータgetValue()に渡す、を使用します。これで、取得できるIDfalseのでへの参照を取得できると思います。私はそれを試していません。試してみたら教えてください。@drawable/fooTypedValue

于 2012-07-06T17:54:01.823 に答える
0

なぜこのようにしようとしているのか、もう少し説明していただけますか?通常、文字列はまったく使用しません。さらに、私はそのようなドローアブルの使用に慣れていません。

私の知る限り、foo.pngという1つのドローアブルが必要です。これをさまざまなレイアウトで使用する場合は、それで問題ありません。画像ビューを使用するだけです。すべてのリソースについて、プログラム内の整数値(R.drawable.fooなど)を追跡する必要があります。

于 2012-07-06T16:12:06.957 に答える
0

まあ、完全にきれいではありませんが、その間に私はこれでドローアブルIDを取得することができました:

int keyId = getResources().getIdentifier(key, "drawable", getPackageName());

int drawableId = getResources().getIdentifier(getString(keyId).replace("res/","").replace(".png",""),null,getPackageName());
于 2012-07-06T17:53:10.560 に答える