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
相關文章
- Android 自定義實現switch開關按鈕Android
- 自定義View:自定義屬性(自定義按鈕實現)View
- Android 自定義控制元件 按鈕滾動選擇Android控制元件
- Qt自定義開關按鈕控制元件QT控制元件
- Alert Dialog "Done"按鈕定義.
- jquery使用一個按鈕實現控制元素的顯示與隱藏jQuery
- C#自定義控制元件—旋轉按鈕C#控制元件
- Linux vscode右上角佈局按鈕顯示 & 頂部不顯示搜尋欄LinuxVSCode
- 自定義一個酷炫的提交完成按鈕
- Android自定義控制元件之實現一個球賽比分條Android控制元件
- Android開發自定義控制元件實現一個餅狀圖Android控制元件
- Android開發自定義控制元件實現一個折線圖Android控制元件
- Android 自定義控制元件一 帶圓形進度的按鈕 ControlButton2Android控制元件
- VirtualView Android 實現詳解(三)—— 新增一個自定義控制元件ViewAndroid控制元件
- 點選按鈕實現div的顯示和隱藏
- JavaScript點選一個按鈕隱藏和顯示divJavaScript
- LabVIEW的自定義按鈕View
- (轉)Android 自定義Dialog實現步驟及封裝Android封裝
- Android 自定義Toast實現多次觸發只會顯示一次toastAndroidAST
- Android 自定義Switch開關按鈕的樣式Android
- Android開發自定義View之滑動按鈕與自定義屬性AndroidView
- Android開發自定義控制元件實現一個足球積分榜RankBarAndroid控制元件
- 自定義view之寫一個帶刪除按鈕的EdittextView
- 使用SVG實現的一個Android播放/暫停按鈕SVGAndroid
- Android獲取dialog自定義佈局中的控制元件Android控制元件
- WPF 自定義控制元件的坑(蠢的:自定義控制元件內容不顯示)控制元件
- JavaScript 點選一個按鈕 div的隱藏和顯示JavaScript
- Android自定義控制元件之自定義ViewGroup實現標籤雲Android控制元件View
- Android UI控制元件系列:ImageButton(帶圖示的按鈕)AndroidUI控制元件
- iOS 自定義鍵盤字母按鈕iOS
- Simple WPF: WPF 自定義按鈕外形
- 基於VUE自定義指令實現按鈕級許可權控制Vue
- Vue2-利用自定義指令實現按鈕許可權控制Vue
- 使用自定義 View 繪製一個懸浮式可拖拽按鈕View
- 如何點選一個按鈕實現列印
- 自定義有多個按鈕節點的SliderViewIDEView
- 點選同一按鈕實現div的隱藏與顯示切換
- Android 最簡單的自定義Dialog之一Android