You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio如何将drawable目录下图片做成可选画廊供用户选取

Android Studio实现drawable资源图片画廊选择方案

你可以用AndroidX的RecyclerView实现横向滚动的画廊选择效果,具体操作步骤如下:

1. 引入依赖

在你的Module级build.gradle文件的dependencies块中添加RecyclerView依赖(已引入可跳过):

dependencies {
    // 版本可替换为你项目匹配的最新稳定版
    implementation "androidx.recyclerview:recyclerview:1.3.2"
}

添加后同步项目即可。

2. 创建画廊单图Item布局

新建布局文件item_gallery_image.xml,用于展示每个可选的缩略图:

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/iv_gallery_item"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_margin="8dp"
    android:scaleType="centerCrop"
    android:background="@drawable/selector_gallery_item" />

你可以额外创建一个selector选中状态样式selector_gallery_item.xml,实现选中时加边框的高亮效果,不需要也可以直接跳过。

3. 实现RecyclerView适配器

新建适配器类GalleryAdapter.java:

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.GalleryViewHolder> {
    private Context context;
    private int[] imageResArray;
    private OnItemClickListener listener;
    // 记录选中位置
    private int selectedPos = 0;

    public interface OnItemClickListener {
        void onItemClick(int imageResId, int position);
    }

    public GalleryAdapter(Context context, int[] imageResArray, OnItemClickListener listener) {
        this.context = context;
        this.imageResArray = imageResArray;
        this.listener = listener;
    }

    @NonNull
    @Override
    public GalleryViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_gallery_image, parent, false);
        return new GalleryViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull GalleryViewHolder holder, int position) {
        int resId = imageResArray[position];
        holder.ivItem.setImageResource(resId);
        // 切换选中状态
        holder.itemView.setSelected(selectedPos == position);
        holder.itemView.setOnClickListener(v -> {
            selectedPos = holder.getAdapterPosition();
            listener.onItemClick(resId, selectedPos);
            notifyDataSetChanged();
        });
    }

    @Override
    public int getItemCount() {
        return imageResArray.length;
    }

    public static class GalleryViewHolder extends RecyclerView.ViewHolder {
        ImageView ivItem;
        public GalleryViewHolder(@NonNull View itemView) {
            super(itemView);
            ivItem = itemView.findViewById(R.id.iv_gallery_item);
        }
    }
}

4. 在Activity中初始化画廊

在你要展示画廊的Activity布局中添加RecyclerView:

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/rv_gallery"
    android:layout_width="match_parent"
    android:layout_height="120dp"
    android:layout_marginVertical="16dp" />

之后在Activity的onCreate方法中初始化控件:

// 你已经定义好的图片资源数组
int image[] = {R.drawable.example, R.drawable.sue};
RecyclerView rvGallery = findViewById(R.id.rv_gallery);
// 设置横向滚动布局,实现画廊效果
rvGallery.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
// 初始化适配器
GalleryAdapter adapter = new GalleryAdapter(this, image, (imageResId, position) -> {
    // 这里拿到用户选中的图片资源ID,做后续逻辑处理
    // 比如把选中的图片展示到大图区域:ivBig.setImageResource(imageResId);
});
rvGallery.setAdapter(adapter);

运行后就能实现横向滚动、点击选中的画廊效果,和你参考的目标效果一致。

内容的提问来源于stack exchange,提问作者chen abien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:15:01