Android自定義對(duì)話框Dialog
本文簡(jiǎn)單介紹自定義對(duì)話框Dialog的使用,代碼和結(jié)構(gòu)都非常簡(jiǎn)單,目的是能夠快速使用自定義對(duì)話框,在本文中不具體講解對(duì)話框的高級(jí)使用。
實(shí)現(xiàn)步驟
首先需要自己在我們的.xml文件中自己構(gòu)建布局
布局文件做好之后,我們可以在style文件下自己定義布局的樣式
前兩步都做好之后,我開始在寫java文件
具體實(shí)現(xiàn)過程
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設(shè)置" 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" style="@style/textview14sp" android:layout_weight="1" android:inputType="phone" android:maxLength="3" android:textColor="@color/colorPrimary" /> <EditText android:id="@+id/et_ip2" style="@style/textview14sp" android:layout_weight="1" android:inputType="phone" android:maxLength="3" android:textColor="@color/colorPrimary" /> <EditText android:id="@+id/et_ip3" style="@style/textview14sp" android:layout_weight="1" android:inputType="phone" android:maxLength="3" android:textColor="@color/colorPrimary" /> <EditText android:id="@+id/et_ip4" style="@style/textview14sp" 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="確認(rèn)" 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代碼,里面用到了一些簡(jiǎn)單的組建,大家按自己的需求和風(fēng)格制作就行。部分組件中用到了style屬性,該屬性我們同樣是在res/value/style文件中構(gòu)建.
注意:所有組件的首字母都要大寫。
2. style
<!-- 自定義對(duì)話框樣式 --> <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); } /*監(jiān)聽事件*/ 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,在該類中我們需要有一個(gè)構(gòu)造方法在方法里面引用我們的style文件,接下來的就是我們一般套路啦。特別提示一下我在該類中使用dismiss();來銷毀對(duì)話框。在MainActivity.java中,只需要把這個(gè)類實(shí)例化一下,創(chuàng)建出對(duì)象,調(diào)用對(duì)象的show();方法就可以將對(duì)話框顯示出來。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android開發(fā)環(huán)境安裝和配置圖文教程
輕松搞定Android開發(fā)環(huán)境部署,這篇文章主要為大家詳細(xì)介紹了Android開發(fā)環(huán)境安裝和配置圖文教程,感興趣的小伙伴們可以參考一下2016-06-06簡(jiǎn)單實(shí)現(xiàn)Android放大鏡效果
這篇文章主要教大家簡(jiǎn)單實(shí)現(xiàn)Android放大鏡效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12android自定義組件實(shí)現(xiàn)儀表計(jì)數(shù)盤
這篇文章主要為大家詳細(xì)介紹了android自定義組件實(shí)現(xiàn)儀表計(jì)數(shù)盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11Android自定義View實(shí)現(xiàn)loading動(dòng)畫加載效果
項(xiàng)目開發(fā)中對(duì)Loading的處理是比較常見的,安卓系統(tǒng)提供的不太美觀,引入第三發(fā)又太麻煩,這時(shí)候自己定義View來實(shí)現(xiàn)這個(gè)效果。這篇文章主要介紹了Android自定義View實(shí)現(xiàn)loading動(dòng)畫加載效果,需要的朋友可以參考下2017-03-03Flutter質(zhì)感設(shè)計(jì)之直接輸入
這篇文章主要為大家詳細(xì)介紹了Flutter質(zhì)感設(shè)計(jì)之直接輸入,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08Android6.0藍(lán)牙出現(xiàn)無(wú)法掃描設(shè)備或閃退問題解決辦法
這篇文章主要介紹了Android6.0藍(lán)牙出現(xiàn)無(wú)法掃描設(shè)備或閃退問題解決辦法的相關(guān)資料,需要的朋友可以參考下2017-02-02android實(shí)現(xiàn)用戶體驗(yàn)超棒的微信WebView進(jìn)度條
本篇文章主要介紹了android實(shí)現(xiàn)用戶體驗(yàn)超棒的微信WebView進(jìn)度條,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03AndroidStudio3.6的卸載安裝,Gradle持續(xù)下載/Gradle Build失敗等問題
這篇文章主要介紹了AndroidStudio3.6的卸載安裝,Gradle持續(xù)下載/Gradle Build失敗等問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Android View源碼解讀 DecorView與ViewRootImpl淺談
這篇文章主要解讀了Android View源碼,為大家詳細(xì)介紹DecorView與ViewRootImpl,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02