в галерее, как дать различный фон для каждого изображения в Android - PullRequest
0 голосов
/ 01 марта 2012

Привет, я делаю одно приложение здесь, мне нужно отображать изображения по горизонтали. Поэтому, используя галерею, я отображал изображения. Но мне нужен разный фон для каждого изображения в галерее. Я не знаю, как это сделать.Я дал фон для галереи, но один и тот же фон для всей галереи. Но мне нужен разный фон для каждого изображения. Любой помогает мне. Я использую код ниже.

       example .class:
        public class example extends Activity {
/** Called when the activity is first created. */
  private Gallery gallery;
           private ImageView imgView;
      private Integer[] Imgid = {
        R.drawable.popup2, R.drawable.a_2, R.drawable.a_3, R.drawable.a_4, R.drawable.a_5, R.drawable.a_6, R.drawable.a_7};
            @Override
           public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    gallery = (Gallery) findViewById(R.id.examplegallery);
    gallery.setAdapter(new AddImgAdp(this));
     }
        public class AddImgAdp extends BaseAdapter {

    int GalItemBg;

    private Context cont;


    public AddImgAdp(Context c) {

        cont = c;

        TypedArray typArray = obtainStyledAttributes(R.styleable.GalleryTheme);

        GalItemBg = typArray.getResourceId(R.styleable.GalleryTheme_android_galleryItemBackground, 0);

        typArray.recycle();

    }


    public int getCount() {

        return Imgid.length;

    }


    public Object getItem(int position) {

        return position;

    }


    public long getItemId(int position) {

        return position;

    }

            @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
          ImageView imgView = new ImageView(cont);
                    imgView.setImageResource(Imgid[position]);
            imgView.setLayoutParams(new Gallery.LayoutParams(80, 70));
               imgView.setScaleType(ImageView.ScaleType.FIT_XY);
              imgView.setBackgroundResource(GalItemBg);
                return imgView;
    }
       }
    }

Ответы [ 3 ]

1 голос
/ 01 марта 2012

Проверьте этот пример ImageAdapter.У вас должен быть некоторый фрагмент списка со ссылками на изображения в чертежах и их установка внутри метода getView адаптера с использованием imageView.setImageResource (mImageIds [position]);

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 attr = mContext.obtainStyledAttributes(R.styleable.HelloGallery);
        mGalleryItemBackground = attr.getResourceId(
                R.styleable.HelloGallery_android_galleryItemBackground, 0);
        attr.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 imageView = new ImageView(mContext);

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

        return imageView;
    }
}
0 голосов
/ 01 марта 2012

Вы должны использовать метод getView адаптера для установки фонового изображения различных изображений // Сохранение фонового изображения Integer [] backGroundImage = {R.drawable.background1, R.drawable.background2, R.drawable.background3};

public View getView (int position, View convertView, ViewGroup parent) {

ImageView imageView = new ImageView(cont);
 -----
 -----
 ----

// отступить наземное изображение imageView.setBackgroundResource (BackgroundImage [число]); }

0 голосов
/ 01 марта 2012

Я думаю, что переменная GalItemBg инициализируется в конструкторе класса вашего адаптера, она не изменяется при вызове метода getView, поэтому вы получили тот же фон.

попробовать

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    ImageView imgView = new ImageView(cont);
    imgView.setImageResource(Imgid[position]);
    imgView.setLayoutParams(new Gallery.LayoutParams(80, 70));
    imgView.setScaleType(ImageView.ScaleType.FIT_XY);
    imgView.setBackgroundResource(Imgid[position]);
    return imgView;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...