自定义Dialog样式
来源:互联网 发布:人防构件计算软件 编辑:程序博客网 时间:2024/05/17 01:07
最近做项目,由于要兼容2.3版本的系统,所以很多控件需要自定义,现在写一下自定义的dialog,以便各个版本的系统显示的dialog都一样,所以需要自定义样式。
先看下样式:
下面是主代码:
<span style="font-size:18px;">package com.example.MyDialog;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.*;public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //初始化MyDialog,并传入样式R.style.add_dialog参数 MyDialog myDialog = new MyDialog(MyActivity.this, R.style.add_dialog); myDialog.setContentView(R.layout.dialog_layout); //获取屏幕宽度参数 Display display = getWindowManager().getDefaultDisplay(); //获取dialog的窗口 Window dialogWindow = myDialog.getWindow(); WindowManager.LayoutParams lp = dialogWindow.getAttributes(); //设置窗口的宽度:屏幕宽度减去40dp lp.width = display.getWidth() - dip2px(MyActivity.this, 40); //设置窗口高度,wrap_content lp.height = WindowManager.LayoutParams.WRAP_CONTENT; //设置窗口居中 dialogWindow.setGravity(Gravity.CENTER); dialogWindow.setAttributes(lp); //显示窗口 myDialog.show(); } }); } //dp转px工具 public int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); }}</span>MyDialog类代码:
<span style="font-size:18px;">package com.example.MyDialog;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;/** * Created by PQ on 2014/12/26. * * 自定义dialog */public class MyDialog extends Dialog implements View.OnClickListener { private Button mBtnCancel; private Button mBtnSure; private Context mConext; public MyDialog(Context context) { super(context); } public MyDialog(Context context, int theme) { super(context, theme); mConext = context; } protected MyDialog(Context context, boolean cancelable, OnCancelListener cancelListener) { super(context, cancelable, cancelListener); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_layout); mBtnCancel = (Button) findViewById(R.id.btn_cancel); mBtnSure = (Button) findViewById(R.id.btn_sure); mBtnSure.setOnClickListener(this); mBtnCancel.setOnClickListener(this); } @Override public void onClick(View view) { if (view == mBtnCancel) { //点击取消 Toast.makeText(mConext, "取消", Toast.LENGTH_SHORT).show(); } else if (view == mBtnSure) { //点击确定按钮,处理你需要处理的数据 Toast.makeText(mConext, "确定", Toast.LENGTH_SHORT).show(); } dismiss(); }}</span>主布局代码:很简单就一个按钮:
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World, MyActivity" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击弹出dialog" /></LinearLayout></span>
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/color_white"> <TextView android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center" android:textColor="@color/color_blue" android:text="标题" android:textSize="18sp" /> <ImageView android:layout_width="match_parent" android:layout_height="1dp" android:background="@color/color_blue" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="内容" android:padding="10dp" android:textColor="@color/color_blue" /> <ImageView android:layout_width="match_parent" android:layout_height="1dp" android:background="@color/color_gray" /> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp"> <Button android:id="@+id/btn_cancel" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/button_dialog_selector" android:text="取消" /> <ImageView android:layout_width="1dp" android:layout_height="match_parent" android:background="@color/color_gray" /> <Button android:id="@+id/btn_sure" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/button_dialog_selector" android:text="确定" /> </LinearLayout></LinearLayout></span>
样式style代码:
下面的
<item name="android:windowBackground">@color/color_white</item> <!-- 自己想要的背景 -->
换成
<item name="android:windowBackground">@android:color/transparent</item>
就可以设置背景是透明的,然后在xml中设置背景可以是圆角。
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><resources> <!-- dialog --> <style name="add_dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <!-- 边框 --> <item name="android:windowIsFloating">true</item> <!-- 是否浮现在activity之上 --> <item name="android:windowIsTranslucent">false</item> <!-- 半透明 --> <item name="android:windowNoTitle">true</item> <!-- 无标题 --> <item name="android:windowBackground">@color/color_white</item> <!-- 自己想要的背景 --> <item name="android:backgroundDimEnabled">true</item> <!-- 模糊 --> </style></resources></span>按钮selector代码:
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/button_dialog_shape_pressed" android:state_pressed="true" /> <item android:drawable="@drawable/button_dialog_shape" /></selector></span>button_dialog_shape_pressed代码:
<span style="font-size:18px;"><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/color_gray" /></shape></span>button_dialog_shape代码:
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/color_white" /></shape></span>colors代码:
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><resources> <color name="color_blue">#2889d7</color> <color name="color_white">#ffffff</color> <color name="color_gray">#cccccc</color></resources></span>
点击按钮后的效果:
0 0
- Android-自定义Dialog样式
- Android 自定义Dialog样式
- Android dialog自定义样式
- 自定义dialog样式
- Android自定义Dialog样式
- 自定义Dialog样式
- Android 自定义Dialog样式
- 自定义dialog样式
- android自定义dialog样式
- 自定义dialog样式
- 自定义dialog的样式
- dialog 样式自定义详解
- android-自定义Dialog样式
- 自定义dialog样式
- 自定义Dialog样式
- android自定义Dialog样式
- 自定义dialog布局样式
- 自定义Dialog(自定义button样式)
- #pragma详解
- html仿游戏网站首页面
- 一个多线程程序挂起问题解决
- C#中 Excel列字母与数字的转换
- 描述下 “reset” CSS 文件的作用和使用它的好处。
- 自定义Dialog样式
- iOS8 UITextView 输入内容实时更新 cell 的高度
- 一个图形爱好者的书架
- 57步进电机了解与实践笔记
- Java判断文件还是文件夹
- Java程序员必学的Hotspot JVM选项
- Unity之EditorUtility.SaveFilePanel-十一-
- 临界区(Critical section)与互斥体(Mutex)的区别
- BufferedWriter