1.先把dialog格式设置好 透明的没有边框 这样相当于得到一个空白的画板 想怎么添加布局就怎么添加布局 想怎么写就怎么写 所以就是自定义的了
转载请标注转载http://blog.csdn.net/oqihaogongyuan/article/details/50958659
自定义Dialog的详细步骤(实现自定义样式一般原理)
现在很多App的提示对话框都非常有个性,然而你还用系统的对话框样式,是不是觉得很落后呢,今天我就给大家讲讲怎样自定义自己的Dialog,学会了之后,你就会根据自家app的主题,设计出相应的Dialog的风格。
好了接下来我就以一个简单风格的自定义Dialog来讲讲自定义dialog的一般步骤和原理。
第一步: 给Dialog设置一个风格主题(基本都是用这个主题)无边框全透明背景:
<!--自定义dialog背景全透明无边框theme --> <style name="MyDialog" parent="android:style/Theme.Dialog"> <!--背景颜色及和透明程度--> <item name="android:windowBackground">@android:color/transparent</item> <!--是否去除标题 --> <item name="android:windowNoTitle">true</item> <!--是否去除边框--> <item name="android:windowFrame">@null</item> <!--是否浮现在activity之上--> <item name="android:windowIsFloating">true</item> <!--是否模糊--> <item name="android:backgroundDimEnabled">false</item> </style> 2.自己定义layout 加载到自定义的MyselfDialog中 定义为自己需要的界面 主要是自定义一些按钮的点击事件 滑动事件 单选对话框等 需要通过接口调用方法 (所以自定义的类中 需要自己定义接口 到对应的点击事件中实现接口中的方法 在activity 中重写接口的方法)
public class MyselfDialog extends Dialog { private TextView textView; private Button btConfirm; private Button btCancel; private TextView titile; public MyselfDialog(Context context) { super(context, R.style.MyDialog); } private onYesClickInterface onYesClickInterface; private onNoClickInterface onNoClickInterface; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialig_myself); titile = (TextView) findViewById(R.id.textview_title); textView = (TextView) findViewById(R.id.textview); btConfirm = (Button) findViewById(R.id.confirm); btCancel = (Button) findViewById(R.id.cancel); btConfirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (onYesClickInterface != null){ onYesClickInterface.setYesClick(); } } }); btCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (onNoClickInterface != null){ onNoClickInterface.setNoClick(); } } }); } public void setOnYesClickInterface(onYesClickInterface onYesClickInterface){ if (onYesClickInterface != null){ this.onYesClickInterface = onYesClickInterface; } } public void setOnNoClickInterface(onNoClickInterface onNoClickInterface){ if (onNoClickInterface != null){ this.onNoClickInterface = onNoClickInterface; } } public void setTitle(String title){ this.titile.setText(title); } public void setMessage(String msg){ this.textView.setText(msg); } public interface onYesClickInterface{ public void setYesClick(); } public interface onNoClickInterface{ public void setNoClick(); } }
3. Activity界面代码 重写接口方法 实现对话框功能
public class DialogActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_myselfdialog); Button bt = (Button) findViewById(R.id.show_dialog); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MyselfDialog myselfDialog = new MyselfDialog(getBaseContext()); myselfDialog.setTitle("1111111111111111111111111111111"); myselfDialog.setMessage("22222222222222222222222222222222222"); myselfDialog.setOnYesClickInterface(new MyselfDialog.onYesClickInterface() { @Override public void setYesClick() { Toast.makeText(getBaseContext(),"点击确定按钮",Toast.LENGTH_SHORT).show(); } }); myselfDialog.setOnNoClickInterface(new MyselfDialog.onNoClickInterface() { @Override public void setNoClick() { Toast.makeText(getBaseContext(),"点击取消按钮",Toast.LENGTH_SHORT).show(); } }); myselfDialog.show(); } }); }}
时间: 2025-01-11 23:21:31