使用listview中的recylerview使项目模糊?

时间:2017-07-09 06:04:39

标签: android android-recyclerview android-drawable android-cardview

enter image description here

这是我的应用程序...在此我希望当我点击任何一个cardview时,背景应该模糊,另一个应该出现在模糊外观上的选定一个上,当用户点击任何一个按钮时,用户获得新的活动。我正在使用此library

帮助我开始吧。谢谢

4 个答案:

答案 0 :(得分:2)

正如我从你的问题中可以理解的那样,你在listView里面有recyclelerViews,并且在recycleler视图项目点击你希望实现像this library那样将你的行项目布局改为这样的东西,记得将它包裹在BlurLayout中,如下面的< / p>

<com.daimajia.androidviewhover.BlurLayout
        android:id="@+id/blurBg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        //copy here your recycler view row layout 
</com.daimajia.androidviewhover.BlurLayout>

创建一个将出现在模糊背景上的布局,让我们说叠加 如下所示

  <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
   //you can place your buttons here or any layout which you want
    <Button
        android:id="@+id/btnOk"
        android:layout_centerInParent="true"
        android:layout_width="40dp"
        android:layout_height="wrap_content"
        android:text="ok" />
</RelativeLayout>

现在在您的视图持有者的回收者视图中绑定此视图

public class yourViewHolder extends RecyclerView.ViewHolder {
    public TextView title;
    BlurLayout blurLayout;
    View hover;
    public yourViewHolder(View view) {
        super(view);
        title = (TextView) view.findViewById(R.id.title);
      blurLayout = (BlurLayout)findViewById(R.id.blurBg);
      hover = LayoutInflater.from(mContext).inflate(R.layout.overlay, null);
      blurLayout.setHoverView(hover);
    }
    hover.findViewById(R.id.btnOk).setOnClickListener(new    View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //do what you want
    });

}

如果我理解错误或者您需要别的东西,请告诉我

答案 1 :(得分:1)

如果您希望该视图显示在个别项目上,则应使用Popup view。使用它可以根据锚视图调整其位置,并可以根据需要进行自定义。这可以提供帮助:

在onBindViewHolder()中使用它。

holder.buttonViewOption.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            //creating a popup menu
            PopupMenu popup = new PopupMenu(mCtx, holder.buttonViewOption);
            //displaying the popup
            popup.show();

        }
    });

您可以根据回收商视图项目指定其位置。

检查此答案https://stackoverflow.com/a/39888321/2100079

答案 2 :(得分:1)

您可以在运行时使用alpha属性来模糊图像

    @Override
    public void onBindViewHolder(final MyViewHolder holder, int position) {

                holder.thumbnail.setAlpha(0.5f);
                holder.thumbnail.setOnClickListener((new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        holder.thumbnail.setAlpha(0.5f);
                    }
                });

    }

答案 3 :(得分:0)

您可以使用具有自定义布局的AlertDailog来实现相同目的。

可以找到使用和指导here