弹出展示详情界面

作者: 根艮哏艮根 | 来源:发表于2018-01-16 10:52 被阅读16次

    先上图


    效果图

    上代码
    ExpertDialog.java

    public class ExpertDialog extends Dialog {
    
        private Callback callback;
        private int position;
        private Context context;
        private RecyclerView dialogExpertRv;
        private CircleImageView dialogExpertIcon;
        private TextView dialogExpertName;
        private TextView dialogExpertTechnology;
        private TextView dialogExpertInquiry;
    
        private SingleAdapter<ExpertDialogEntity> adapter;
    
        private List<ExpertDialogEntity> list;
    
        /**
         * Find the Views in the layout<br />
         * <br />
         * Auto-created on 2018-01-04 10:44:15 by Android Layout Finder
         * (http://www.buzzingandroid.com/tools/android-layout-finder)
         */
        private void findViews(View mView) {
            dialogExpertRv = (RecyclerView) mView.findViewById(R.id.dialog_expert_rv);
            dialogExpertIcon = (CircleImageView) mView.findViewById(R.id.dialog_expert_icon);
            dialogExpertName = (TextView) mView.findViewById(R.id.dialog_expert_name);
            dialogExpertTechnology = (TextView) mView.findViewById(R.id.dialog_expert_technology);
            dialogExpertInquiry = (TextView) mView.findViewById(R.id.dialog_expert_inquiry);
        }
    
    
        public ExpertDialog(@NonNull Context context, int position, Callback callback) {
            super(context, R.style.CustomDialogWifi);
            this.context = context;
            this.callback = callback;
            this.position = position;
            setDialog();
        }
    
        private void setDialog() {
            View mView = LayoutInflater.from(getContext())
                    .inflate(R.layout.dialog_epert_show_layout, null);
            findViews(mView);
            dialogExpertInquiry.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    callback.callback(position);
                    dismiss();
                }
            });
            //点击外部可以消失
            this.setCanceledOnTouchOutside(true);
            super.setContentView(mView);
        }
    
        /**
         * 头像
         *
         * @param iconPath
         * @return
         */
        public ExpertDialog setIcon(String iconPath) {
            GlideImageLoader.init().displayImage(context, iconPath, dialogExpertIcon);
            return this;
        }
    
        /**
         * 姓名和职称
         *
         * @param expertName
         * @param expertTech
         * @return
         */
        public ExpertDialog setTitle(String expertName, String expertTech) {
            if (!TextUtils.isEmpty(expertName) && TextUtils.isEmpty(expertTech)) {
                dialogExpertName.setText(expertName);
                dialogExpertTechnology.setText(expertTech);
            }
            return this;
        }
    
        /**
         * 内容
         *
         * @param list
         * @return
         */
        public ExpertDialog setContent(List<ExpertDialogEntity> list) {
    
            adapter = new SingleAdapter<ExpertDialogEntity>(context,
                    R.layout.adapter_expert_list_item_layout,
                    list) {
                @Override
                public void convert(ViewHolder holder, ExpertDialogEntity expertDialogEntity, int position) {
    
                    holder.setText(R.id.tv_expert_item_title, expertDialogEntity.getItemTitle());
                    holder.setText(R.id.tv_expert_item_content, expertDialogEntity.getItemContent());
                    GlideImageLoader.init().displayImage(context,
                            expertDialogEntity.getItemIcon(), (ImageView) holder.getView(iv_expert_item_icon));
    
                }
            };
            dialogExpertRv.setLayoutManager(new LinearLayoutManager(context));
            dialogExpertRv.setAdapter(adapter);
            return this;
        }
    
        /**
         * 对话框消失
         */
        public void dimiss() {
            ExpertDialog.this.cancel();
        }
    
        /**
         * 点击后禁止再次点击
         */
        public void isEnabled() {
            dialogExpertInquiry.setClickable(false);
            dialogExpertInquiry.setEnabled(false);
        }
    }
    

    布局文件,dialog_epert_show_layout.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/margin_space_20"
            android:layout_marginRight="@dimen/margin_space_20"
            android:background="@color/transparent"
            android:orientation="vertical">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="50dp"
                android:background="@drawable/update_manager_bg"
                android:orientation="vertical">
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="50dp"
                    android:orientation="vertical">
    
                    <TextView
                        android:id="@+id/dialog_expert_name"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="@dimen/margin_space_10"
                        android:gravity="center"
                        android:text="专家王"
                        android:textColor="@color/black2"
                        android:textSize="18sp" />
    
                    <TextView
                        android:id="@+id/dialog_expert_technology"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="@dimen/margin_space_5"
                        android:gravity="center"
                        android:text="农技员"
                        android:textColor="@color/common_green_color"
                        android:textSize="14sp" />
    
                </LinearLayout>
    
                <android.support.v7.widget.RecyclerView
                    android:id="@+id/dialog_expert_rv"
                    android:layout_width="match_parent"
                    android:layout_weight="1"
                    android:overScrollMode="never"
                    android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
    
                <TextView
                    android:id="@+id/dialog_expert_inquiry"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="@dimen/margin_space_20"
                    android:layout_marginLeft="@dimen/margin_space_20"
                    android:layout_marginRight="@dimen/margin_space_20"
                    android:layout_marginTop="@dimen/margin_space_10"
                    android:background="@drawable/tv_dialog_expert_inquiry_bg"
                    android:gravity="center"
                    android:paddingTop="@dimen/margin_space_10"
                    android:paddingBottom="@dimen/margin_space_10"
                    android:text="立即询问"
                    android:textColor="@color/white"
                    android:textSize="16sp" />
    
            </LinearLayout>
    
            <com.gstb.agriculture.utils.CircleImageView
                android:id="@+id/dialog_expert_icon"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:layout_gravity="center|top"
                android:scaleType="fitXY"
                android:src="@drawable/user_icon"></com.gstb.agriculture.utils.CircleImageView>
    
    
        </FrameLayout>
    
    
    </LinearLayout>
    
    

    在style.xml里面配置

     <style name="CustomDialogWifi" parent="@android:style/Theme.Translucent">
            <item name="android:windowFrame">@null</item>
            <item name="android:windowIsFloating">true</item>
            <item name="android:windowIsTranslucent">false</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:backgroundDimEnabled">true</item>
        </style>
    

    SingleAdapter的使用可以参考我的这个列子https://github.com/liuxinggen/adapter

    使用方法

          ExpertDialog dialog = new ExpertDialog(activity, position, new Callback() {
                @Override
                public void callback(int position) {
                    Toast.makeText(activity, "点击立即咨询" + position, Toast.LENGTH_SHORT).show();
                    intent = new Intent(activity, ExpertDetailsActivity.class);
                    intent.putExtra("title", "询问专家详情");
                    startActivity(intent);
                }
            });
            dialog.setIcon("http://p2.so.qhimgs1.com/t01f3cd841f22f826d2.jpg");
            dialog.setTitle("专家黄", "高级工程师");
            dialog.setContent(list);
            dialog.show();
    

    相关文章

      网友评论

        本文标题:弹出展示详情界面

        本文链接:https://www.haomeiwen.com/subject/bbfsoxtx.html