android自定义dialog样式
2015-09-11 22:09
453 查看
有两种方式:
一种只是界面的要求功能不要太多:
直接自定义个布局,得到布局的view,用
dialog = new AlertDialog.Builder(this).setView(dialogView).create();得到对话框。
用dialog.show()显示就可以了。
也可以用 dialog.setContentView(view)函数设置,是有区别的。大家可以试一下。
布局文件:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/bg"> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:src="@drawable/exam_finish" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/imageView1" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:text="本次考试共用30分钟" android:textColor="#777733" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:drawableLeft="@drawable/exam_face" android:gravity="center_vertical" android:text="是否交卷?" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#777788" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/textView2" android:layout_marginTop="30dp" > <Button android:id="@+id/yes" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginRight="5dp" android:layout_weight="1" android:background="#98D947" android:text="是" /> <Button android:id="@+id/no" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="#98D947" android:text="否" /> </LinearLayout> </RelativeLayout>
2、仅是页面的要求满足不了要求,就可以自定功能:
自定义组件:步骤一般是:
一、继承组件如:Dialog
二、构造函数,根据自己需求设定。
三、定义接口(重要),在MainActivity中实现,不是绝对的,一般步骤,在组件中调用。
先看代码:自定义Dialog
import android.content.Context; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MyDialog extends android.app.Dialog { private Context context; private Button yes; private Button no; private OnCustomDialogListener customDialogListener; /*构造函数*/ public MyDialog(Context context, OnCustomDialogListener customDialogListener) { super(context); this.context = context; this.customDialogListener = customDialogListener; } /* 自定义接口,一般按钮的功能在这定义比如:一个确定,一个取消,在主函数中实现 */ public interface OnCustomDialogListener { public void doConfirm(); public void doCancel(); } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.dialog); yes = (Button) findViewById(R.id.yes); no = (Button) findViewById(R.id.no); /*按钮的监听事件,实现是调用主函数中的实现*/ yes.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { customDialogListener.doConfirm(); dismiss(); } }); no.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { customDialogListener.doCancel(); dismiss(); } }); } }主函数:
import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.Window; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.example.hello1.MyDialog.OnCustomDialogListener; public class MainActivity extends Activity implements OnCustomDialogListener { private MyDialog mg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mg = new MyDialog(this, this); Button btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mg.show(); } }); } /*主函数接口实现*/ @Override public void doConfirm() { Toast.makeText(this, "上一题", 1000).show(); } @Override public void doCancel() { Toast.makeText(this, "下一题", 1000).show(); } }最主要的一点就是
接口的定义和实现。其他的组件的自定义也是这样。
相关文章推荐
- android---2048游戏实现
- Anroid View事件响应机制和ViewGroup的事件响应分发机制
- 我的Android开源项目:JNote
- Parse发布Bolts,一个面向iOS和Android的底层库集合
- Parse发布Bolts,一个面向iOS和Android的底层库集合
- Android启动器(Launcher)开发详解
- (4.1.35.4)android中的native crash
- android之gradle构建工具学习之路(一)
- (4.1.35.3)Android平台程序崩溃的类型及原因列举
- (4.1.35.2)Android 重写系统Crash处理类,保存Crash信息到SD卡 和 完美退出程序的方法
- android开发第三弹--SharedPreferences工具类
- Android启动器(Launcher)开发详解
- 深入讲解Android Property机制
- Android
- Android Api Demos登顶之路(六十四)Content-->External Storage
- SQLite—Android数据库
- Android MVP模式实践
- android学习之路——android编程规范
- (4.1.35.1) android处理crash程序崩溃异常
- Android性能优化典范之Profile GPU Rendering