自己封装的dialog控件
自定义dialog肯定是用的很多了 但是感觉每次做都是很乱 单纯完成任务而已,现在封装了一下 以后用到直接copy
先上图:
主activity
package com.su.testcustomdialog; import com.su.testcustomdialog.MyDialog.Dialogcallback; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class CustomDialogActivity extends Activity { private TextView textView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textView = (TextView) findViewById(R.id.textView11); Button button = (Button) findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MyDialog myDialog = new MyDialog(CustomDialogActivity.this); myDialog.setContent("哥来自Activity"); myDialog.setDialogCallback(dialogcallback); myDialog.show(); } }); } /** * 设置mydialog需要处理的事情 */ Dialogcallback dialogcallback = new Dialogcallback() { @Override public void dialogdo(String string) { textView.setText("哥來自Dialog: " + string); } }; }
然后是MyDialog的核心了
package com.su.testcustomdialog; import android.app.Dialog; import android.content.Context; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; /** * 自定义dialog * @author sfshine * */ public class MyDialog { Context context; Dialogcallback dialogcallback; Dialog dialog; Button sure; TextView textView; EditText editText; /** * init the dialog * @return */ public MyDialog(Context con) { this.context = con; dialog = new Dialog(context, R.style.dialog); dialog.setContentView(R.layout.dialog); textView = (TextView) dialog.findViewById(R.id.textview); sure = (Button) dialog.findViewById(R.id.button1); editText = (EditText) dialog.findViewById(R.id.editText1); sure.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialogcallback.dialogdo(editText.getText().toString()); dismiss(); } }); } /** * 设定一个interfack接口,使mydialog可以處理activity定義的事情 * @author sfshine * */ public interface Dialogcallback { public void dialogdo(String string); } public void setDialogCallback(Dialogcallback dialogcallback) { this.dialogcallback = dialogcallback; } /** * @category Set The Content of the TextView * */ public void setContent(String content) { textView.setText(content); } /** * Get the Text of the EditText * */ public String getText() { return editText.getText().toString(); } public void show() { dialog.show(); } public void hide() { dialog.hide(); } public void dismiss() { dialog.dismiss(); } }
dialog的布局
<?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:layout_margin="30.0dp" android:orientation="vertical" android:padding="10dip" > <!-- 这里如果使用android:layout_width="5000dip"设置一个极大的值 系统就会 --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="30.0dp" android:gravity="center" android:text="自定义Dialog" android:textColor="#F0F" android:textSize="20dip" /> <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" > </EditText> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="確定" /> </LinearLayout>
style 的文件
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">false</item> <item name="android:windowNoTitle">true</item> <item name="android:background">#FFF</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> </style> </resources>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构