10

色のリストがあります

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <color name="white">#FFFFFF</color>
 <color name="yellow">#FFFF00</color>
 <color name="fuchsia">#FF00FF</color>
 <color name="red">#FF0000</color>
 <color name="silver">#C0C0C0</color>
 <color name="gray">#808080</color>
 <color name="olive">#808000</color>
 <color name="purple">#800080</color>
 <color name="maroon">#800000</color>
 <color name="aqua">#00FFFF</color>
 <color name="lime">#00FF00</color>
 <color name="teal">#008080</color>
 <color name="green">#008000</color>
 <color name="blue">#0000FF</color>
 <color name="navy">#000080</color>
 <color name="black">#000000</color>
</resources>

(私は誰かが尋ねた別の質問からこのリストを取りました)

私がやりたいのは、すべての色の名前を取得することです。リストが必要なので、スピナーにロットを入力できます。擬似コードは次のようになります。

List ofColours = getListOfColors(R.color);
for(int i = 0 ; i < ofColours.size() ; i ++)
{
  String colour = getResources().getColor(ofColours.get(i));
  addColourToSpinner(colour);
} 

私が欲しいのは色のリストです。それがそれを説明することを願っています すべての助けに乾杯

4

4 に答える 4

11

リフレクションを使用して色のリストにアクセスできます。

Field[] fields = Class.forName(getPackageName()+".R$color").getDeclaredFields();
for(Field field : fields) {
    String colorName = field.getName();
    int colorId = field.getInt(null);
    int color = getResources().getColor(colorId);
    Log.i("test", colorName + " => " + colorId + " => " + color);
}
于 2012-11-12T13:20:10.387 に答える
1

またはで単純に 2 つの配列を作成してみませんstrings.xmlarrays.xml。このようなもの:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="items">
        <item>white</item>
        <item>yellow</item>
        <item>fuchsia</item>
        <item>red</item>
    </string-array>
    <string-array name="values">
        <item>#FFFFFF</item>
        <item>#FFFF00</item>
        <item>#FF00FF</item>
        <item>#FF0000</item>
    </string-array>
</resources>

developer.android.com の簡単な例に従うことができます: http://developer.android.com/guide/topics/ui/controls/spinner.html

これは別のチュートリアルです: http://www.dcpagesapps.com/developer-resources/android/21-android-tutorial-spinners?start=1

これで始められるはずです。

于 2012-11-12T13:19:27.037 に答える