【问题标题】:android get color list from resourceandroid从资源中获取颜色列表
【发布时间】:2015-11-10 10:11:59
【问题描述】:

我有一个包含名称和颜色代码的数组。我想用从数组中获取的颜色为 gridview 中的单元格着色。我创建了这段代码,但我得到了 NPE,这是错误:

Logcat 输出:

Caused by: java.lang.NullPointerException
10-06 11:03:30.513 25902-25902/? E/AndroidRuntime:
at android.graphics.Color.parseColor(Color.java:211)

彩色 XML 文件:

 <array name="colors">
<item name="White">#FFFFFF</item>
    <item name="Ivory">#FFFFF0</item>
    <item name="LightYellow">#FFFFE0</item>
    <item name="Yellow">#FFFF00</item>
    <item name="Snow">#FFFAFA</item>
    <item name="FloralWhite">#FFFAF0</item>
 </array>

源代码:

public class ColorPickerAdapter extends BaseAdapter {

      private Context context;
      private List<Integer> colorList = new ArrayList<Integer>();

      public ColorPickerAdapter(Context context) {
           this.context = context;
           String colors[] = context.getResources().getStringArray(R.array.colors);

           colorList = new ArrayList<Integer>();

            // add the color array to the list
           for (int i = 0; i < colors.length; i++) {
                colorList.add(Color.parseColor(colors[i]));
            }
           [..]

【问题讨论】:

    标签: android gridview colors adapter


    【解决方案1】:

    您的资源似乎有误。你应该怎么做

    方法一

    在colors.xml中

    <color name="Ivory">#FFFFF0</color>
    <color name="LightYellow">#FFFFE0</color>
    <color name="Yellow">#FFFF00</color>
    <color name="Snow">#FFFAFA</color>
    <color name="FloralWhite">#FFFAF0</color>
    

    在arrays.xml 中:

    <array name="colors">
        <item>@color/Ivory</item>
        <item>@color/LightYellow</item>
        <item>@color/Yellow</item>
        <item>@color/Snow</item>
    </array>
    

    然后访问使用

    int[] colors = context.getResources().getIntArray(R.array.colors);
    
    for (int i = 0; i < tileColumns; i++) {
        colorList.add(colors[i]);
    }
    

    方法 2

    不要指定不同颜色的名称

    <resources>
        <string-array name="colors">        
            <item>#FFFFF0</item>
            <item>#FFFFE0</item>  
            <item>#FFFF00</item>
            <item>#FFFAFA</item>
            <item>#FFFAF0</item>
        </string-array>
    </resources>
    

    并使用它使用

    String colors[] = context.getResources().getStringArray(R.array.colors);
    colorList = new ArrayList<Integer>();
    
    // add the color array to the list
    for (int i = 0; i < colors.length; i++) {
        colorList.add(Color.parseColor(colors[i]));
    }
    

    【讨论】:

      【解决方案2】:

      尝试用以下方式定义你的数组:

         <string-array name="colors">  
              <item>#FFFFFF</item>  
              <item>#FFFFF0</item>  
               ...
         </string-array>
      

      【讨论】:

        猜你喜欢
        • 2012-10-31
        • 2011-07-13
        • 1970-01-01
        • 1970-01-01
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多