Android学习之自定义AlertDialog
来源:互联网 发布:免费会计软件 编辑:程序博客网 时间:2024/05/17 22:17
今天写下自定义弹出对话框AlertDialog,自定义AlertDialog有很多种,也有很多实现的方式,系统自带的AlertDialog往往功能单一,主要是样式比较丑,对于处女座简直是不能忍啊,于是就想到了自定义样式的AlertDialog,以下是Demo:
先画布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearlayout_alert_dialog_text_view_custom" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/white" android:orientation="vertical"> <TextView android:id="@+id/textview_message_alert_dialog_text_view_custom" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal|bottom" android:paddingBottom="15dp" android:paddingTop="15dp" android:textColor="@android:color/black" android:textSize="15dp" android:textStyle="bold" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="15dp" android:gravity="center_horizontal" android:orientation="horizontal"> <Button android:id="@+id/button_cancel_alert_dialog_text_view_custom" android:layout_width="match_parent" android:layout_height="40dp" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:layout_weight="1" android:background="@drawable/bg_alert_dialog_custom" android:text="取消" android:textColor="@android:color/holo_blue_light" android:textSize="14dp" android:textStyle="bold" /> <Button android:id="@+id/button_ok_alert_dialog_text_view_custom" android:layout_width="match_parent" android:layout_height="40dp" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:layout_weight="1" android:background="@drawable/bg_alert_dialog_custom" android:text="确定" android:textColor="@android:color/holo_red_light" android:textSize="14dp" android:textStyle="bold" /> </LinearLayout></LinearLayout>
自定义Button的样式:<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="3dp" /> <stroke android:width="1px" android:color="#FF999999" /> <solid android:color="@android:color/white" /></shape>
最后是代码:/** * 主界面 * * @author yuzhentao */public class MainActivity extends Activity { private Context context; private AlertDialog ad; private Window window; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { context = this; ad = new AlertDialog.Builder(context).create(); window = ad.getWindow(); findViewById(R.id.button_activity_main).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { initAlertDialog(); } }); } /** * 初始化AlertDialog */ private void initAlertDialog() { //获取屏幕分辨率宽度和高度 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidth = dm.widthPixels; //初始化AlertDialog ad.setCancelable(false); ad.setCanceledOnTouchOutside(false); ad.show(); //获取Window来设置AlertDialog的布局(宽为屏幕宽度乘以0.95,高为自适应) window.setLayout((int) (screenWidth * 0.95F), LinearLayout.LayoutParams.WRAP_CONTENT); window.setContentView(R.layout.alert_dialog_text_view_custom); TextView tvMessage = (TextView) window.findViewById(R.id.textview_message_alert_dialog_text_view_custom); Button btnCancel = (Button) window.findViewById(R.id.button_cancel_alert_dialog_text_view_custom); Button btnOk = (Button) window.findViewById(R.id.button_ok_alert_dialog_text_view_custom); tvMessage.setText("自定义弹出对话框"); btnCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "点击了取消", Toast.LENGTH_SHORT).show(); ad.dismiss(); } }); btnOk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "点击了确定", Toast.LENGTH_SHORT).show(); ad.dismiss(); } }); }}
先初始化AlertDialog和Window类,其中Window类很重要,它就是自定义AlertDialog的核心类
ad = new AlertDialog.Builder(context).create();window = ad.getWindow();
再获取屏幕宽度,设置AlertDialog的属性,再通过Window类来定义自定义AlertDialog的宽度和高度,核心方法是window.setContentView(R.layout.alert_dialog_text_view_custom);
这里来自定义AlertDialog的布局,最后就是查找控件,设置单击事件,希望对大家有多帮助。哦,忘记了,还有效果图:
Demo地址:http://download.csdn.net/detail/qq_23940659/9467048
2 0
- Android学习之自定义AlertDialog
- android 之自定义 AlertDialog
- Android之AlertDialog自定义
- Android开发之AlertDialog和自定义AlertDialog
- Android学习之AlertDialog
- Android学习之AlertDialog
- Android自定义控件之AlertDialog
- Android进阶之AlertDialog自定义
- Android进阶之AlertDialog自定义
- Android之AlertDialog自定义对话框
- Android进阶之AlertDialog自定义
- Android进阶之AlertDialog自定义
- Android进阶之AlertDialog自定义
- Android进阶之AlertDialog自定义
- Android学习笔记之AlertDialog
- android学习之AlertDialog使用
- 【Android学习笔记】自定义AlertDialog对话框
- Android之自定义AlertDialog无法监听控件
- 求值1-(1/2)+...(-1)^n*(1/m)
- ACM 2010水仙花数
- [leetcode] Verify Preorder Serialization of a Binary Tree
- 【面试经典题之字符串】用C或C++写一个函数,实现反转一个null结尾的字符串
- Java泛型详解
- Android学习之自定义AlertDialog
- java IO-搜索目录所有子文件、复制文件到指定地方
- 第一次实验2-1
- 【Android】安卓学习笔记之使用WebView加载网页
- Huawei 2014 机试题
- 一、计算机系统概述
- 歌曲背后的故事《可回答音乐相关的问题》
- poj 1038 Bugs Integrated, Inc. 状压dp
- VTK从CSV文件中读取数据