自定义Dialog是每个android 爱屁屁几乎都会用到的。于是乎最为一个android人我也自定义了一个Dialog.效果见图
这个运行效果是在华为大屏手机上,But,当我兴致勃勃的将代码部署到老红米(红米一代,最老版本的红米)上时,和我预想的差了不止一点啊看图:
敢问这一道蓝色的线是什么鬼??我看看了代码,将设置的透明背景去掉,离奇的发现,这条蓝色的线是标题和正文分割线。去掉这根线也不是什么难事,只需要在原来的代码上加上几行代码就搞定了。
看代码:
package com.homenet.androidclient.dialog; import android.app.Dialog; import android.content.Context; import android.graphics.Color; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageButton; import android.widget.TextView; import com.homenet.androidclient.R; import com.homenet.androidclient.bean.UserBean; import java.util.List; /** * Description: 房屋设施弹出框<br/> * Copyright (c) ,${year} , janson <br/> * This program is protected by copyright laws. <br/> * Program Name:${file_name} <br/> * Date: 2016-10-26 * @author 史元睿 * @version : 1.0 */ public class EquDialog extends Dialog{ private Context context; private GridView gridView; private ImageButton mydelect; private MyEquAdapter adapter; private List<String> list=UserBean.devices; public EquDialog(Context context, List<String> devices) { super(context); this.context = context; setContentView(R.layout.dialog_equ); Window window = getWindow(); WindowManager.LayoutParams params = window.getAttributes(); params.gravity = Gravity.CENTER; window.setBackgroundDrawableResource(android.R.color.transparent); window.setAttributes(params); setCanceledOnTouchOutside(true);//上面的代码,是用来去除Holo主题的蓝色线条
try{ int dividerID=context.getResources().getIdentifier("android:id/titleDivider", null, null); View divider=findViewById(dividerID); divider.setBackgroundColor(Color.TRANSPARENT); }catch(Exception e){ e.printStackTrace(); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); gridView= (GridView) findViewById(R.id.dialog_gv); mydelect= (ImageButton) findViewById(R.id.dialog_delect); mydelect.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { EquDialog.this.dismiss(); } }); adapter=new MyEquAdapter(context,list); gridView.setAdapter(adapter); }} class MyEquAdapter extends BaseAdapter{ private Context context; private List<String> list=UserBean.devices; public MyEquAdapter() { } public MyEquAdapter(Context context,List<String> list) { this.context = context; this.list=list; } //用一个方法来获取数据源 public void setList(Context context,List<String> list) { this.context = context; this.list = list; } public List<String> getList() { return list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView==null){ holder=new ViewHolder(); convertView = LayoutInflater.from(context).inflate(R.layout.equ_gv_item, null); holder.tv= (TextView) convertView.findViewById(R.id.equ_gv_item_tv); convertView.setTag(holder); }else { holder = (ViewHolder) convertView.getTag(); } holder.tv.setText(list.get(position)); return convertView; } class ViewHolder{ private TextView tv; }}
没错,一个try catch 就搞定,现在任凭你在那个手机上都是没有那条讨厌的蓝色线。
这个自定义Dialog 布局如下:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center" android:background="@color/transparent"> <LinearLayout android:layout_width="280dp" android:layout_height="330dp" android:orientation="vertical" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:background="@color/white"> <!--房屋配套设施--> <TextView android:layout_width="match_parent" android:layout_height="40dp" android:text="房屋配套设施" android:gravity="center_vertical" android:layout_marginLeft="15dp" android:textColor="@color/black"/> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="@color/gainsboro"/> <GridView android:id="@+id/dialog_gv" android:layout_width="wrap_content" android:background="@color/white" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:clickable="true" android:clipChildren="true" android:columnWidth="35dp" android:listSelector="@null" android:numColumns="3" android:paddingBottom="1dp" android:stretchMode="columnWidth" android:verticalSpacing="1dp"></GridView> </LinearLayout> <ImageButton android:id="@+id/dialog_delect" android:layout_width="20dp" android:layout_height="20dp" android:layout_marginTop="20dp" android:background="@mipmap/delect"/> </LinearLayout>