Android画廊属性

时间:2011-07-10 17:27:17

标签: android android-layout

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

实现android库示例

我在以下行

中得到此错误

无法加载项目“HelloGallery”

的属性文件

应用程序HelloGallery(进程com.hellogallery)意外停止。请再试一次。

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

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 :(得分:0)

你已经在画廊中的线性布局aswellas中给出了xmlns:android =“http://schemas.android.com/apk/res/android”..只需单独给它线性布局。可能这将是加载您的XML文件的问题。 如果没有,请在logcat窗口中发布您的错误。