Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式在RecyclerView中屏蔽图像_Java_Android_Android Studio_User Interface - Fatal编程技术网

Java 以编程方式在RecyclerView中屏蔽图像

Java 以编程方式在RecyclerView中屏蔽图像,java,android,android-studio,user-interface,Java,Android,Android Studio,User Interface,我有我的主要布局显示清单通过RecyclerView。我希望它看起来像这样: 我使用的是简单的square.jpg图片,我希望在所有列表中应用一致的掩码(单个对象,代码)。 关于制作面具有一些答案,但我似乎无法将它们应用于我的需要, 因为它们全部或大部分都是指一个简单的布局或一个单一的图像视图,但在我的例子中它应该如何工作呢?代码: 活动\u main.xml <?xml version="1.0" encoding="utf-8"?>

我有我的主要布局显示清单通过RecyclerView。我希望它看起来像这样:

我使用的是简单的square.jpg图片,我希望在所有列表中应用一致的掩码(单个对象,代码)。 关于制作面具有一些答案,但我似乎无法将它们应用于我的需要, 因为它们全部或大部分都是指一个简单的布局或一个单一的图像视图,但在我的例子中它应该如何工作呢?代码:

活动\u main.xml

    <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:background="@color/colorPrimaryLight"
    tools:context=".MainActivity">
<androidx.appcompat.widget.Toolbar
    android:id="@+id/tb"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:elevation="4dp"
    android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.0"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    />

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/rv"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:paddingTop="25dp"
    android:soundEffectsEnabled="true"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/tb" />

<com.google.android.material.navigation.NavigationView
    android:layout_width="50dp"
    android:layout_height="16dp"
    app:layout_constraintBottom_toBottomOf="@id/tb"
    app:layout_constraintEnd_toEndOf="@id/tb"
    app:layout_constraintHorizontal_bias="0.083"
    app:layout_constraintStart_toStartOf="@id/tb"
    app:layout_constraintTop_toTopOf="@id/tb"
    app:layout_constraintVertical_bias="0.4" />
</androidx.constraintlayout.widget.ConstraintLayout>
    <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    style="@android:style/Widget.Material.Button.Borderless"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal">


    <ImageView
        android:id="@+id/imageView"
        android:layout_width="124dp"
        android:layout_height="130dp"
        android:contentDescription="@string/descriptor"
        app:layout_constraintBottom_toBottomOf="@id/btn_read_more"
        app:layout_constraintEnd_toEndOf="@id/btn_read_more"
        app:layout_constraintHorizontal_bias="0.947"
        app:layout_constraintStart_toStartOf="@id/btn_read_more"
        app:layout_constraintTop_toTopOf="@id/btn_read_more"
        app:layout_constraintVertical_bias="0.421"
        app:srcCompat="@mipmap/ic_launcher_round" />

    <TextView
        android:id="@+id/textTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/descriptor"
        android:textColor="@color/text_color"
        android:textDirection="rtl"
        android:textSize="20sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toTopOf="@id/textBody"
        app:layout_constraintEnd_toStartOf="@id/imageView"
        app:layout_constraintHorizontal_bias="0.979"
        app:layout_constraintStart_toStartOf="@id/btn_read_more"
        app:layout_constraintTop_toTopOf="@id/btn_read_more" />

    <TextView
        android:id="@+id/textBody"
        android:layout_width="268dp"
        android:layout_height="90dp"
        android:text="@string/descriptor"
        android:textColor="@color/text_color"
        android:textDirection="rtl"
        android:textSize="14sp"
        app:layout_constraintBottom_toBottomOf="@id/btn_read_more"
        app:layout_constraintTop_toBottomOf="@id/textTitle"
        app:layout_constraintStart_toStartOf="@id/btn_read_more"
        app:layout_constraintEnd_toStartOf="@id/imageView"
        tools:layout_editor_absoluteX="16dp"
        tools:layout_editor_absoluteY="45dp" />

    <Button
        android:id="@+id/btn_read_more"
        android:layout_width="408dp"
        android:layout_height="149dp"
        android:layout_marginStart="2dp"
        android:layout_marginTop="2dp"
        android:layout_marginEnd="1dp"
        android:background="#00FAFAFA"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
为了回答这个问题,我想要一个圆形蒙版,无论是通过编程还是通过Photoshop提取的白色.png。 任何以任何方式优化我的代码的进一步提示都是欢迎的。我肯定要做一些事情来改变这个事实,即列表本身是不可点击的,而是在顶部有一个大的透明按钮。。。
谢谢大家!

Ronny只需更改您的物品布局即可

  • 只需将circularImage库添加到应用程序级别的gradle文件中。
  • 您的项目布局如下所示:

    <RelativeLayout>
    
    <Text></Text>
    <de.hdodenhof.circleimageview.CircleImageView>
    //add endParent= true
    </de.hdodenhof.circleimageview.CircleImageView>
    
    </RelativeLayout>
    
    
    //add endParent=true
    
    package com.example.mytrip;
    
    import android.content.Intent;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    
    import androidx.annotation.NonNull;
    import androidx.recyclerview.widget.RecyclerView;
    
    import java.util.List;
    
    public class Adapter extends RecyclerView.Adapter<Adapter.Viewholder> {
    
        private List<ModelClass> modelClassList;
        public Adapter(List<ModelClass> modelClassList) {
            this.modelClassList = modelClassList;
        }
    
        @NonNull
        @Override
        public Viewholder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_layout,
                    viewGroup, false);
            return new Viewholder(view);
        }
    
        @Override
        public void onBindViewHolder(@NonNull final Viewholder viewholder, final int position) {
            final int resource = modelClassList.get(position).getImageIcon();
            final String title = modelClassList.get(position).getTitle();
            final String body = modelClassList.get(position).getBody();
    
            viewholder.btnReadMore.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(v.getContext(), AllTripInfo.class);
                    intent.putExtra("tripId", position);
                    v.getContext().startActivity(intent);
                }
    
            });
            viewholder.setData(resource, title, body);
        }
    
        @Override
        public int getItemCount() {
            return modelClassList.size();
        }
    
        static class Viewholder extends RecyclerView.ViewHolder{
    
            private ImageView imageView;
            private TextView title;
            private TextView body;
            Button  btnReadMore;
    
            public Viewholder(@NonNull View itemView) {
                super(itemView);
                btnReadMore = itemView.findViewById(R.id.btn_read_more);
                imageView = itemView.findViewById(R.id.imageView);
                title = itemView.findViewById(R.id.textTitle);
                body = itemView.findViewById(R.id.textBody);
            }
    
            private void setData(int imageResource, String titleText, String bodyText)
            {
                imageView.setImageResource(imageResource);
                title.setText(titleText);
                body.setText(bodyText);
                }
    
        }
    
    }
    
    package com.example.mytrip;
    
    public class ModelClass {
    
        private  int imageIcon;
        String title;
        String body;
    
        public ModelClass(int imageIcon, String title, String body) {
            this.imageIcon = imageIcon;
            this.title = title;
            this.body = body;
        }
    
        public int getImageIcon() {
            return imageIcon;
        }
    
        public String getTitle() {
            return title;
        }
    
        public String getBody() {
            return body;
        }
    
    
    }
    
    <RelativeLayout>
    
    <Text></Text>
    <de.hdodenhof.circleimageview.CircleImageView>
    //add endParent= true
    </de.hdodenhof.circleimageview.CircleImageView>
    
    </RelativeLayout>