Android自定义dialog。
一、最近在写项目时用到了自定义dialog,作为小菜鸟,一听是自定义的就觉得很高大上。但是自己会写了以后也发现,其实一点都不难!
废话不多说了,直接上代码!
二、这是自定义dialog的布局
<?xmlversion="1.0"encoding="utf-8"?>
<!-- 记得设置padding属性哦,不然效果就变成控件超出布局,很丑的-->
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@drawable/bg"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="20dp">
<!-- 自定义dialog的布局,若要控制自定义dialog的长度和宽度只需设置android:layout_width和android:layout_height属性就好 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal|center_vertical"
android:orientation="horizontal"
android:weightSum="10">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="发送手机"
android:textColor="@android:color/black"
android:textSize="18dp"/>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/black"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center_horizontal|center_vertical"
android:orientation="horizontal"
android:weightSum="10">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="7"
android:gravity="center_horizontal|center_vertical"
android:text="手机号:"
android:textColor="@android:color/black"
android:textSize="18dp"/>
<EditText
android:id="@+id/tv_tel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="3"
android:hint="请输入手机号码"
android:textColor="@android:color/black"
android:textSize="18dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="30dp"
android:layout_marginTop="30dp"
android:gravity="center_horizontal|center_vertical"
android:orientation="horizontal"
android:weightSum="10">
<Button
android:id="@+id/bt_send"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="15dp"
android:layout_weight="5"
android:background="@android:color/holo_blue_dark"
android:gravity="center_horizontal|center_vertical"
android:text="发送"/>
<Button
android:id="@+id/bt_cancel"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="10dp"
android:layout_weight="5"
android:background="@android:color/holo_blue_dark"
android:gravity="center_horizontal|center_vertical"
android:text="取消"/>
</LinearLayout>
</LinearLayout>
三、这是MainActivity的代码。
package com.example.customdialogdemo;
import java.util.zip.Inflater;
import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
*
* @author angela
*
*/
public class MainActivityextends Activity{
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/**
* 点点看哦,的点击事件
* @param view
*/
public void showCustomDialog(View view){
final DialogmDialog = new Dialog(this, R.style.CustomDialogTheme);
//获取要填充的布局
View v = LayoutInflater.from(getApplicationContext()).inflate(R.layout.send_tel_dailog,null);
//设置自定义的dialog布局
mDialog.setContentView(v);
//false表示点击对话框以外的区域对话框不消失,true则相反
mDialog.setCanceledOnTouchOutside(false);
mDialog.show();
//获取自定义dialog布局控件
Button confirmBt = (Button)v.findViewById(R.id.bt_send);
Button cancelBt = (Button)v.findViewById(R.id.bt_cancel);
//确定按钮点击事件
confirmBt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mDialog.dismiss();
}
});
//取消按钮点击事件
cancelBt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mDialog.dismiss();
}
});
}
}
<!-- 去掉dialog开头的样式 -->
<stylename="CustomDialogTheme"parent="android:Theme.Dialog">
<itemname="android:windowFrame">@null</item>
<!-- 去掉dialog标题 -->
<itemname="android:windowNoTitle">true</item>
<!-- 设置dialog背景,这里也可以在XML布局里面写 -->
<itemname="android:windowBackground">@drawable/bg</item>
<!-- 设置是否悬浮 -->
<itemname="android:windowIsFloating">true</item>
<itemname="android:windowContentOverlay">@null</item>
</style>
五、最后,这只是我这个程序媛小菜鸟个人对自定义dialog的理解,肯定有很多不足, 望路过的大神多多提醒!谢谢