Android 自定義dialog,實現右上角顯示一個控制元件按鈕
轉載請註明出處:http://blog.csdn.net/bbld_/article/details/27070531
這裡是使用自定義dialog的佈局實現,並去除原生dialog的標題。
以下是dialog佈局的xml檔案:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="50dp"
android:background="@android:color/transparent"
android:gravity="center" >
<LinearLayout
android:id="@+id/LL_this"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="9dp"
android:layout_marginRight="9dp"
android:layout_marginTop="9dp"
android:background="@drawable/rounded_background"
android:orientation="vertical" >
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="30dp"
android:shrinkColumns="1" >
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="課室: " />
<TextView
android:id="@+id/txt_pre_entry_dialog_classroom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="資料異常" />
</TableRow>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/gray" />
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="老師: " />
<TextView
android:id="@+id/txt_pre_entry_dialog_teacher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="資料異常" />
</TableRow>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/gray" />
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="課程: " />
<TextView
android:id="@+id/txt_pre_entry_dialog_course"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="資料異常" />
</TableRow>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/gray" />
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="班級: " />
<TextView
android:id="@+id/txt_pre_entry_dialog_classes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="資料異常" />
</TableRow>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginBottom="10dp"
android:background="@color/gray" />
</TableLayout>
</LinearLayout>
<ImageButton
android:id="@+id/dialog_pre_entry_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@drawable/cancel" />
</RelativeLayout>
這裡我寫了其它的一些表格佈局的東西,所以看起來多了一點,其實起到做用的屬性程式碼也就幾行。因為要實現在右上角偏移突出顯示一個關閉的Button,這裡就使用RelativeLayout了。上面的程式碼中第6、13、14、15行起了主要作用,有什麼作用效果大家動下手修改修改就知道了。
然後就要到程式碼裡去設定dialog了,如下:
private Dialog allMsg;
//Dialog的佈局View
private View allMsgView;
// 通過LayoutInflater找到改佈局
allMsgView = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.dialog_all_pre_entry_msg, null);
//建立Dialog
allMsg = new AlertDialog.Builder(this).create();
//設定點選外邊緣不消失,2.x的應該是預設不消失的
allMsg.setCanceledOnTouchOutside(false);
//findView佈局裡的控制元件
imgBtn_dialog = (ImageButton) allMsgView.findViewById(R.id.dialog_pre_entry_close);
imgBtn_dialog.setOnClickListener(this);
txt_dialog_classroom = (TextView) allMsgView.findViewById(R.id.txt_pre_entry_dialog_classroom);
txt_dialog_course = (TextView) allMsgView.findViewById(R.id.txt_pre_entry_dialog_course);
txt_dialog_teacher = (TextView) allMsgView.findViewById(R.id.txt_pre_entry_dialog_teacher);
txt_dialog_classes = (TextView) allMsgView.findViewById(R.id.txt_pre_entry_dialog_classes);
然後在你需要彈出的地方呼叫如下:
//兩句的順序不能調換
allMsg.show();
allMsg.getWindow().setContentView((RelativeLayout) allMsgView);
取消顯示,在關閉按鈕的監聽裡關閉dialog就行了:
/**
* 按鈕監聽
*/
@Override
public void onClick(View v)
{
switch (v.getId())
{
// dialog的圖片取消button
case R.id.dialog_pre_entry_close:
allMsg.dismiss();
break;
default:
break;
}
}
效果圖:
demo下載地址:http://download.csdn.net/detail/bbld_/8118911
相關文章
- Qt自定義開關按鈕控制元件QT控制元件
- Linux vscode右上角佈局按鈕顯示 & 頂部不顯示搜尋欄LinuxVSCode
- C#自定義控制元件—旋轉按鈕C#控制元件
- VirtualView Android 實現詳解(三)—— 新增一個自定義控制元件ViewAndroid控制元件
- (轉)Android 自定義Dialog實現步驟及封裝Android封裝
- LabVIEW的自定義按鈕View
- 使用SVG實現的一個Android播放/暫停按鈕SVGAndroid
- Android 最簡單的自定義Dialog之一Android
- Qt QMessageBox::information 自定義按鈕QTORM
- 自定義有多個按鈕節點的SliderViewIDEView
- iOS 自定義鍵盤字母按鈕iOS
- Simple WPF: WPF 自定義按鈕外形
- 基於VUE自定義指令實現按鈕級許可權控制Vue
- Vue2-利用自定義指令實現按鈕許可權控制Vue
- 如何給input的右上角加個清除的按鈕?
- 使用自定義 View 繪製一個懸浮式可拖拽按鈕View
- Qt實現自定義控制元件QT控制元件
- 如何自定義radio按鈕的樣式
- [C#] (原創)一步一步教你自定義控制元件——03,SwitchButton(開關按鈕)C#控制元件
- C#自定義控制元件—文字顯示、文字設值C#控制元件
- java使用sshd 實現sftp 自定義顯示目錄JavaFTP
- Android自定義拍照實現Android
- vue-video-player,通過自定義按鈕元件實現全屏切換效果VueIDE元件
- win10顯示休眠按鈕設定方法 win10電源怎麼顯示休眠按鈕Win10
- antd-mobile 自定義picker按鈕樣式
- 「HTML+CSS」--自定義按鈕樣式【004】HTMLCSS
- 「HTML+CSS」--自定義按鈕樣式【003】HTMLCSS
- 「HTML+CSS」--自定義按鈕樣式【001】HTMLCSS
- 「HTML+CSS」--自定義按鈕樣式【002】HTMLCSS
- Application顯示DialogAPP
- Android自定義View--翻書控制元件(一)AndroidView控制元件
- flutter:教你自定義DialogFlutter
- 【Android】自定義樹形控制元件Android控制元件
- fastadmin 工具欄新增自定義按鈕,實現彈窗並儲存資料效果AST
- 點選同一按鈕顯示隱藏切換
- iOS 左滑按鈕(UITableViewRowAction)顯示圖片iOSUIView
- winform的bindingNavigator上按鈕顯示問題ORM
- 再也不要和產品經理吵架了——Android自定義單選按鈕Android
- Windows API視窗程式設計 - 自定義按鈕WindowsAPI程式設計