Android画廊drawable错误

时间:2011-07-09 18:48:24

标签: android resources android-layout drawable

我正在尝试从http://developer.android.com/resources/tutorials/views/hello-gallery.html

实现android库示例

我在以下行

中得到此错误
       R.drawable.sample_1 cannot be resolved
        R.drawable.sample_2 cannot be resolved,
        R.drawable.sample_3 cannot be resolved,
        R.drawable.sample_4 cannot be resolved,
        R.drawable.sample_5 cannot be resolved,
        R.drawable.sample_6 cannot be resolved,
        R.drawable.sample_7 cannot be resolved

如何解决此问题。代码如下所示。

HelloGallery.java

  package com.HelloGallery;

  import android.app.Activity;
  import android.content.Context;
  import android.content.res.TypedArray;
  import android.os.Bundle;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.AdapterView;
  import android.widget.BaseAdapter;
  import android.widget.Gallery;
  import android.widget.ImageView;
  import android.widget.Toast;
  import android.widget.AdapterView.OnItemClickListener;
  import android.R.drawable;

  public class HelloGalleryActivity extends Activity {
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

     Gallery g = (Gallery) findViewById(R.id.gallery);
     g.setAdapter(new ImageAdapter(this));

     g.setOnItemClickListener(new OnItemClickListener() {
         public void onItemClick(AdapterView parent, View v, int position, long id) {
        Toast.makeText(HelloGalleryActivity.this, "" + position, Toast.LENGTH_SHORT).show();
         }
     });


      }

      public class ImageAdapter extends BaseAdapter {
     int mGalleryItemBackground;
     private Context mContext;

     private Integer[] mImageIds = {
        R.drawable.sample_1,
        R.drawable.sample_2,
        R.drawable.sample_3,
        R.drawable.sample_4,
        R.drawable.sample_5,
        R.drawable.sample_6,
        R.drawable.sample_7
     };

     public ImageAdapter(Context c) {
         mContext = c;
         TypedArray a = obtainStyledAttributes(R.styleable.HelloGallery);
         mGalleryItemBackground = a.getResourceId(
            R.styleable.HelloGallery_android_galleryItemBackground, 0);
         a.recycle();
     }

     public int getCount() {
         return mImageIds.length;
     }

     public Object getItem(int position) {
         return position;
     }

     public long getItemId(int position) {
         return position;
     }

     public View getView(int position, View convertView, ViewGroup parent) {
         ImageView i = new ImageView(mContext);

         i.setImageResource(mImageIds[position]);
         i.setLayoutParams(new Gallery.LayoutParams(150, 100));
         i.setScaleType(ImageView.ScaleType.FIT_XY);
         i.setBackgroundResource(mGalleryItemBackground);

         return i;
     }
      }
  }

main.mxml

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      >
  <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/hello"
      />
      <Gallery xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/gallery"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
  />
  </LinearLayout>

attrs.mxml

  <?xml version="1.0" encoding="utf-8"?>
  <resources>
      <declare-styleable name="HelloGallery">
     <attr name="android:galleryItemBackground" />
      </declare-styleable>
  </resources>

R.java

  /* AUTO-GENERATED FILE.  DO NOT MODIFY.
   *
   * This class was automatically generated by the
   * aapt tool from the resource data it found.  It
   * should not be modified by hand.
   */

  package com.HelloGallery;

  public final class R {
      public static final class attr {
      }
      public static final class drawable {
     public static final int icon=0x7f020000;
      }
      public static final class id {
     public static final int gallery=0x7f050000;
      }
      public static final class layout {
     public static final int main=0x7f030000;
      }
      public static final class string {
     public static final int app_name=0x7f040001;
     public static final int hello=0x7f040000;
      }
      public static final class styleable {
     /** Attributes that can be used with a HelloGallery.
        <p>Includes the following attributes:</p>
        <table>
        <colgroup align="left" />
        <colgroup align="left" />
        <tr><th>Attribute</th><th>Description</th></tr>
        <tr><td><code>{@link #HelloGallery_android_galleryItemBackground com.HelloGallery:android_galleryItemBackground}</code></td><td></td></tr>
        </table>
        @see #HelloGallery_android_galleryItemBackground
      */
     public static final int[] HelloGallery = {
         0x0101004c
     };
     /**
       <p>This symbol is the offset where the {@link com.HelloGallery.R.attr#android_galleryItemBackground}
       attribute's value can be found in the {@link #HelloGallery} array.
       @attr name android:android_galleryItemBackground
     */
     public static final int HelloGallery_android_galleryItemBackground = 0;
      };
  }

1 个答案:

答案 0 :(得分:2)

您的/ res / drawable文件夹中没有名称为

的文件
  

sample_1.png ... _7等

这些是填充窗口小部件所必需的,您声明在这里使用它们:

 private Integer[] mImageIds = {
    R.drawable.sample_1,
    R.drawable.sample_2,
    R.drawable.sample_3,
    R.drawable.sample_4,
    R.drawable.sample_5,
    R.drawable.sample_6,
    R.drawable.sample_7
 };

这是一个整数数组,每个整数都是一个与您应该在/ res / drawable文件夹中创建的可绘制资源相关的ID。

如果您希望快速使用它,只需复制并粘贴已存在于/ drawable /文件夹中的icon.png文件,并重命名粘贴sample_1.png,sample_2.png,sample_3.png等

如果您确实拥有这些文件,则会将它们链接到您的R.java类文件