自定义ViewAndroid控件

弹出展示详情界面

2018-01-16  本文已影响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();
上一篇 下一篇

猜你喜欢

热点阅读