您好,登录后才能下订单哦!
本文简单介绍自定义对话框Dialog的使用,代码和结构都非常简单,目的是能够快速使用自定义对话框,在本文中不具体讲解对话框的高级使用。
实现步骤
首先需要自己在我们的.xml文件中自己构建布局
布局文件做好之后,我们可以在style文件下自己定义布局的样式
前两步都做好之后,我开始在写java文件
具体实现过程
1. xml文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="300dp" android:layout_height="180dp" android:gravity="center" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:background="@android:color/holo_green_light"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" android:text="IP设置" android:textColor="#fff" android:textSize="24sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background="#fff" android:gravity="center" android:orientation="horizontal" android:padding="5dp"> <EditText android:id="@+id/et_ip1" android:layout_weight="1" android:inputType="phone" android:maxLength="3" android:textColor="@color/colorPrimary" /> <EditText android:id="@+id/et_ip2" android:layout_weight="1" android:inputType="phone" android:maxLength="3" android:textColor="@color/colorPrimary" /> <EditText android:id="@+id/et_ip3" android:layout_weight="1" android:inputType="phone" android:maxLength="3" android:textColor="@color/colorPrimary" /> <EditText android:id="@+id/et_ip4" android:layout_weight="1" android:inputType="phone" android:maxLength="3" android:textColor="@color/colorPrimary" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="45dp" android:orientation="horizontal"> <Button android:id="@+id/btn_ipok" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="@android:color/holo_green_light" android:text="确认" android:textColor="#fff" android:textSize="30sp" /> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#fff" /> <Button android:id="@+id/btn_ipcancle" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="@android:color/holo_green_light" android:text="取消" android:textColor="#fff" android:textSize="30sp" /> </LinearLayout> </LinearLayout>
以上是我的xml代码,里面用到了一些简单的组建,大家按自己的需求和风格制作就行。部分组件中用到了style属性,该属性我们同样是在res/value/style文件中构建.
注意:所有组件的首字母都要大写。
2. style
<!-- 自定义对话框样式 --> <style name="dialog_custom" parent="android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:background">#00000000</item> <item name="android:windowBackground">@android:color/transparent</item> </style>
3. class文件
public class IP_dialog extends Dialog { private Button btnOk, btnCancle; private EditText ip1, ip2, ip3, ip4; public static String ip = ""; public IP_dialog(Context context) { super(context, R.style.dialog_custom); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog); initView(); initEvet(); } /*初始化组件*/ private void initView() { btnOk = (Button) findViewById(R.id.btn_ipok); btnCancle = (Button) findViewById(R.id.btn_ipcancle); ip1 = (EditText) findViewById(R.id.et_ip1); ip2 = (EditText) findViewById(R.id.et_ip2); ip3 = (EditText) findViewById(R.id.et_ip3); ip4 = (EditText) findViewById(R.id.et_ip4); } /*监听事件*/ private void initEvet() { btnOk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ip = getIP(); Log.e("IP--->", ip); dismiss(); } }); btnCancle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dismiss(); } }); } /*获取输入的IP值*/ private String getIP() { String ip = ip1.getText().toString().trim() + "." + ip2.getText().toString().trim() + "." + ip3.getText().toString().trim() + "." + ip4.getText().toString().trim(); return ip; } }
该类继承Dialog,在该类中我们需要有一个构造方法在方法里面引用我们的style文件,接下来的就是我们一般套路啦。特别提示一下我在该类中使用dismiss();来销毁对话框。在MainActivity.java中,只需要把这个类实例化一下,创建出对象,调用对象的show();方法就可以将对话框显示出来。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。