Android ImageView Выбрать марку - PullRequest
0 голосов
/ 21 января 2020

В моем приложении 10 изображений. Пользователь должен выбрать один из них. Я хочу, чтобы в правом верхнем углу кликнуло изображение, отмеченное галочкой, а не в других. Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 21 января 2020

Вы можете использовать FrameLayout и ImageView и управлять выбранным состоянием для каждого изображения. Если изображение выбрано, то сделайте imgCheck видимым, иначе скрывайте его.

<FrameLayout
                android:layout_width="80dp"
                android:layout_height="80dp">
                <androidx.appcompat.widget.AppCompatImageView
                    android:id="@+id/img1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"/>
                <androidx.appcompat.widget.AppCompatImageView
                    android:layout_width="wrap_content"
                    android:src="@drawable/ic_checked"
                    android:layout_gravity="right"
                    android:layout_height="wrap_content"/>
</FrameLayout>

Надеюсь, это поможет !!

0 голосов
/ 21 января 2020

Вы можете поместить свои изображения в программу просмотра и сохранить состояние выбранного изображения с помощью следующего адаптера

ImageAdapter

public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ViewHolder> {

    private Context context;
    private int selectedPos = -1;

    public ImageAdapter(Context context) {
        this.context = context;
    }

    public void setSelectedPos(int pos) {
        selectedPos = pos;
        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new ViewHolder(
                LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.item_image, parent, false)
        );
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        if (position == selectedPos) {
            holder.ivCheck.setVisibility(View.VISIBLE);
        } else {
            holder.ivCheck.setVisibility(View.GONE);
        }
    }

    @Override
    public int getItemCount() {
        return 10;
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        private ImageView ivCheck;
        private ImageView image;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.iv_src);
            ivCheck = itemView.findViewById(R.id.iv_check);

            image.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    setSelectedPos(getAdapterPosition());
                }
            });
        }
    }
}

макет:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="8dp">

    <ImageView
        android:id="@+id/iv_src"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="@color/colorPrimary"/>

    <ImageView
        android:id="@+id/iv_check"
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:src="@drawable/ic_action_tick"/>

</RelativeLayout>
...