自定义Dialog
来源:互联网 发布:apache垃圾回收机制 编辑:程序博客网 时间:2024/05/27 19:25
先看效果图:
1.新建一个类,并extends Dialog。
public class MyDialog extends Dialog implements android.view.View.OnClickListener{ private Context context; private String hintTitle,hintDescription;//dialog对话框文字内容 private TextView tv_ok,tv_cancel,tv_hint,tv_hintDescription; public MyDialog(Context context,String hintTitle,String hintDescription) { super(context,R.style.MyDialog); // TODO Auto-generated constructor stub this.hintTitle=hintTitle;//从activity传递过来 this.hintDescription=hintDescription;//从activity传递过来 } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.dialog_hint);//对话框布局 initViews(); } private void initViews(){ tv_ok=(TextView)findViewById(R.id.ok); tv_ok.setOnClickListener(this); tv_cancel=(TextView)findViewById(R.id.cancel); tv_cancel.setOnClickListener(this); tv_hint=(TextView)findViewById(R.id.hint); tv_hintDescription=(TextView)findViewById(R.id.hint_description); tv_hint.setText(hintTitle); tv_hintDescription.setText(hintDescription); setCanceledOnTouchOutside(false);//点击外部对话框不消失 } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.ok: dismiss(); break; case R.id.cancel: dismiss(); break; default: break; } }}
2.写dialog布局dialog_hint.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" android:background="@drawable/round_white_shape"//为了美观这里写了圆角背景 android:orientation="vertical" > <TextView android:id="@+id/hint" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:gravity="center" android:padding="6dp" android:shadowRadius="1.5" android:text="错误提示" android:textColor="#000000" android:textSize="20sp" /> <TextView android:id="@+id/hint_description" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:layout_marginTop="10dp" android:gravity="center" android:padding="6dp" android:text="用户名或密码不正确,请重新再试" android:textColor="#666666" android:textSize="18sp" /> <TextView android:layout_width="match_parent" android:layout_height="0.5dp" android:background="#DFDFDF" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/ok" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginBottom="15dp" android:layout_marginTop="15dp" android:layout_weight="1" android:gravity="center" android:text="确定" android:textColor="#0dbfc6" android:textSize="20sp" /> <View android:layout_width="0.5dp" android:layout_height="match_parent" android:layout_marginBottom="15dp" android:layout_marginTop="15dp" android:background="#DFDFDF" /> <TextView android:id="@+id/cancel" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginBottom="15dp" android:layout_marginTop="15dp" android:layout_weight="1" android:gravity="center" android:text="取消" android:textColor="#0dbfc6" android:textSize="20sp" /> </LinearLayout></LinearLayout>
3.将dialog实例化
public class MainActivity extends Activity implements OnClickListener{ private TextView tv_dialog; private MyDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_dialog=(TextView)findViewById(R.id.tv); tv_dialog.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.tv: dialog=new MyDialog(this, "猜我是谁", "我就是自定义对话框"); dialog.show(); setDialogWindow(dialog);//设置对话框大小和位置 break; default: break; } } public void setDialogWindow(Dialog dialog) { Window window = dialog.getWindow(); WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); int width = wm.getDefaultDisplay().getWidth(); int height = wm.getDefaultDisplay().getHeight(); WindowManager.LayoutParams lp = window.getAttributes(); lp.width = width / 5 * 4; lp.height = height / 5 * 2; window.setAttributes(lp); }}
PS:自定义对话框的布局可以是各种,比如列表,进度条等等,根据需求改变。
demo下载地址:
http://download.csdn.net/detail/kinglong68/9471716
0 0
- 自定义Dialog---继承Dialog
- 自定义Dialog android Dialog
- 自定义Dialog
- 自定义Dialog
- 自定义dialog
- 自定义 Dialog
- 自定义dialog
- 自定义 dialog
- 自定义Dialog
- 自定义 Dialog
- 自定义Dialog
- 自定义dialog
- 自定义Dialog
- 自定义 Dialog
- 自定义Dialog
- 自定义Dialog
- 自定义Dialog
- 自定义Dialog
- 阿里巴巴2016校招笔试题(含答案)
- 浅谈性能测试---响应时间
- 修改状态栏的字体颜色
- 高血压调治
- c++实验2
- 自定义Dialog
- 15个数排序
- 改变Android状态栏字体颜色和实现沉浸式状态栏
- php 对二维数组的某个键的值进行排序
- LINUX挂载局域网硬盘和NFS
- 排序
- AngularJS进阶(二十五)requirejs + angular + angular-route 浅谈HTML5单页面架构
- AndroidStudio使用技巧
- 重学数据结构系列之——平衡树之SB Tree(Size Blanced Tree)