弹出展示详情界面
2018-01-16 本文已影响16人
根艮哏艮根
先上图
![](https://img.haomeiwen.com/i4740566/390dc623a10b04db.jpg)
上代码
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();