1. 程式人生 > >Android 自定義Dialog類,並在Activity中實現按鈕監聽。

Android 自定義Dialog類,並在Activity中實現按鈕監聽。

實際開發中,經常會用到Dialog,比如退出時候會彈出是否退出,或者還有一些編輯框也會用Dialog實現,效果圖如下:

開發中遇到的問題無非在於如果在Activity中監聽這個Dialog中實現的按鈕,Dialog類如下,在MyDialog這個類中實現了一個LeaveMyDialogListener介面,用來實現onclick的點選事件:

package com.Ieasy.Tool;
import com.Ieasy.ieasyware.R;
import android.app.Dialog;
import android.content.Context;
import
android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MyDialog extends Dialog implements android.view.View.OnClickListener { private Context context; private TextView txt; private Button btnok,btnedit,btncancle,btnsave;
private LeaveMyDialogListener listener; public interface LeaveMyDialogListener{ public void onClick(View view); } public MyDialog(Context context) { super(context); // TODO Auto-generated constructor stub this.context = context; }
public MyDialog(Context context,int theme,LeaveMyDialogListener listener) { super(context,theme); // TODO Auto-generated constructor stub this.context = context; this.listener = listener; } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.setContentView(com.Ieasy.ieasyware.R.layout.mydialog); btncancle = (Button)findViewById(R.id.mycancle); btnedit = (Button)findViewById(R.id.myedit); btnok = (Button)findViewById(R.id.myok); txt = (TextView)findViewById(R.id.miaosu); btnsave = (Button)findViewById(R.id.mysave); btncancle.setOnClickListener(this); btnedit.setOnClickListener(this); btnok.setOnClickListener(this); btnsave.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub listener.onClick(v); } }

佈局檔案如下:

<?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="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:background="@drawable/night_biz_subscribe_media_recommend_item_bg"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/miaosu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="20dp"
            android:text="描述"
            android:textColor="@color/whitesmoke"
            android:textSize="20sp" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="50dp"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/myok"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/btnclick"
                android:textColor="@color/whitesmoke"
                android:text="確定" />

            <Button
                android:id="@+id/myedit"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/btnclick"
                android:textColor="@color/whitesmoke"
                android:text="編輯" />
            
            <Button
                android:id="@+id/mysave"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/btnclick"
                android:textColor="@color/whitesmoke"
                android:text="儲存" />

            <Button
                android:id="@+id/mycancle"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/btnclick"
                android:textColor="@color/whitesmoke"
                android:text="取消" />
            
        </LinearLayout>
    </LinearLayout>

</LinearLayout>
View Code

引用的style:

 <style name="MyDialog" parent="@android:Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item> 
        <item name="android:windowBackground">@drawable/night_biz_subscribe_media_recommend_item_bg</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

最後在Activity中呼叫,通過LeaveMyDialogListener 介面來實現在Activity中的點選事件


MyDialog dialog = new MyDialog(context,R.style.MyDialog, new MyDialog.LeaveMyDialogListener() { @Override public void onClick(View view) { switch(view.getId()){ case R.id.myok: break; case R.id.myedit:
break; case R.id.mycancle: break; case R.id.mysave: dialog.dismiss(); default: break; } } }); dialog.show();

如果想獲得Dialog中的TextView控制元件可以這樣獲取,給TextView賦值時候一定要在Dialog show了之後在賦值,你懂得。

TextView text = (TextView) dialog.findViewById(R.id.miaosu);

相關推薦

Android 定義DialogActivity實現按鈕

實際開發中,經常會用到Dialog,比如退出時候會彈出是否退出,或者還有一些編輯框也會用Dialog實現,效果圖如下: 開發中遇到的問題無非在於如果在Activity中監聽這個Dialog中實現的按鈕,Dialog類如下,在MyDialog這個類中實現了一個LeaveMyDialogLi

android定義文字框後面帶清空按鈕

class MyEditText extends EditText { private final String TAG = "MyEditText"; private Drawable dRight; private Rect rBounds; // 構造器 public MyEditText(Conte

android定義控制元件View在Activity使用findByViewId得到結果為null,解決方法

androidの自定義控制元件View在Activity中使用findByViewId得到結果為null 1.  大家常常自定義view,,然後在xml 中新增該view 元件。。如果在Activity 中使用findByViewId 方法獲取該view 時候,返回物件總為

Android定義dialog實現失去焦點activity獲取焦點的功能

前言:由於在專案中需要用到更新顯示動畫的需求,所以想到了dialog,自定義dialog不難,網上教程很多,但是在實現dialog背景透明的需求時,遇到了一點問題,網上的一些方法在我的機器上並沒有實現,只能曲折中找到了另一個方法實現。雖然有點麻煩,但畢竟效果不錯。 此方

Android定義全域性捕獲異常上傳實現實時收集APP崩潰crash資訊

一、異常收集 目的:在APP上線後,可能會出現一些BUG導致了APP的閃退,使用者體驗就非常致命,我們一定要第一時間找到問題的所在,去處理掉問題,處理有方法有兩種,一是發一個修改後的新版本,另一個是用熱修復釋出一個更新補丁,具體選擇哪一種符合自己需求就行。 我們主要說的異常

android 定義dialog實現失去焦點(背景透明)的功能

前言:由於在專案中需要用到更新顯示動畫的需求,所以想到了dialog,自定義dialog不難,網上教程很多,但是在實現dialog背景透明的需求時,遇到了一點問題,網上的一些方法在我的機器上並沒有實現,只能曲折中找到了另一個方法實現。雖然有點麻煩,但畢竟效果不錯。 此方法寫

多執行緒實現方式1:定義一個繼承Thread重寫run方法

/** * 多執行緒實現方式1: * 自定義一個類,繼承Thread類,並重寫run方法。 * 執行緒同時執行。 * @author jiaxutianhuo * */ public cl

Android定義AlertDialog對話方塊回傳Activity引數

需求 開發過程總會想要自己設計的對話方塊,有時候還需要在activity獲取對話方塊的一些操作結果。 思路 1.自定義對話方塊,並繼承AlertDialog 2.在自定義對話方塊中,定義一個介面,並宣告一個方法,將操作結果作為方法引數 3.在act

Android 定義Dialog文字動態載入效果

之前在技術問答上面看到一個提問 “載入中…” 後面三個點是動態的,這麼一個效果實現。想來想去,好像沒想到好的處理方式。 嘗試了一下,以一個最笨的方式實現了。先來看一下效果 : 我是通過自定義一個Dialog,載入中的效果,是在Dialog內部實現的

Android定義Dialog炫酷主流的載入對話方塊

前言  最近開發中用到許多對話方塊,之前都是在外面的程式碼中建立AlertDialog並設定自定義佈局實現常見的對話方塊,諸如更新提示等含有取消和刪除兩個按鈕的對話方塊我們可以通過程式碼建立一個AlertDialog並通過它暴露的一系列方法設定我們自定義的佈局

Android 定義dialog,製作圓角背景直角問題

問題:在自定義dialog彈窗時,為了美觀設計帶圓角背景,但是圓角邊框的同時會出現白色直角部分,如果設定的是白色底,會出現一種設定圓角無效的假象。 圖: 圖一,要達到的效果,圖二,突出白色直角部

android 定義dialog實現方法

listener params .get animator miss nim style wrap 參數 最近一直在做 java 相關的東西, 雖然一直在看 Android 但感覺有點留於理論,總這樣畢竟不行,寫的多不一定懂得多,但要想懂得多就一定要寫的多,於是今天動手寫了

Android定義Dialog多選對話框(Dialog+Listview+CheckBox)

dia bundle adapter get etl wrap 點擊 所有 技術 先放效果截圖 項目中需要有個Dialog全選對話框,點擊全選全部選中,取消全選全部取消。下午查了些資料,重寫了一下Dialog對話框。把代碼放出來。 public class MainAct

Android 定義Dialog小結

關於自定義佈局的Dialog,總是會遇到各種各樣的問題,作為一個菜鳥,想想還是打算專門開一篇總結自己遇到的各種問題。歡迎大佬們指點 自定義佈局寬度和位置問題 自定義佈局,就是自己自由地設定Dialog的樣式,所以肯定會自己寫一個Layout佈局,並把它加載出來,這才是我們想要的,但是經常會出

設計一個 Java 程式定義異常從命令列(鍵盤)輸入一個字串如果該字串值為“XYZ”

設計一個 Java 程式,自定義異常類,從命令列(鍵盤)輸入一個字串,如果該字串值為“XYZ”,則丟擲一個異常資訊“This is a XYZ”,如果從命令列輸入 ABC,則沒有丟擲異常。(只有 XYZ 和 ABC 兩種輸入)。 class xyz {   public void test(S

【舉例】Android定義Dialog——做出“確定/取消”的選擇

1、自定義Dialog的介面 <--!dialog_yesorno_for_permission.xml--> <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="

【舉例】Android定義Dialog——選擇一個RadioButton

1. 自定義Dialog的介面 <--!dialog_selectserver.xml--> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://sch

Android--定義Dialog,仿IOS對話方塊樣式

效果: 實現: 1.dialog_layout.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/ap

Android 定義dialog步驟

1.建類繼承dialog 2.寫構造方法 3.宣告各類控制元件 4.寫oncreate() setContentView引入佈局 初始化宣告的控制元件 5.可以自定義style 6.可以申明內部介面並建立內部例項用於點選事件中,然後讓外部引用者實現介面方法 7.可以重

Android 定義Dialog小結

關於自定義佈局的Dialog,總是會遇到各種各樣的問題,作為一個菜鳥,想想還是打算專門開一篇總結自己遇到的各種問題。歡迎大佬們指點 自定義佈局寬度和位置問題 自定義佈局,就是自己自由地設定Dialog的樣式,所以肯定會自己寫一個Layout佈局,並把它加載出來,這才是我們