導航:首頁 > 操作系統 > android中自定義dialog

android中自定義dialog

發布時間:2022-11-02 14:16:19

android Dialog怎樣自定義屬性

你只要繼承Dialog,然後加個xm樣式
就可以了
樣式:
<style
name="myDialogTheme"
parent="android:Theme.Dialog">
<!--
除去title
-->
<item
name="android:windowNoTitle">true</item>
</style>
重寫Dialog
public
class
Mdi
extends
Dialog
{
public
Mdi(Context
context)
{
super(context);
}
public
Mdi(Context
context,int
style)
{
super(context,
style);
}
public
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mdi);
}
}
引用
Mdi
mdi
=
new
Mdi(FActivity.this,
R.style.myDialogTheme);
mdi.show();

② android載入自定義dialog,背景總是黑色的.不知道為什麼.求解答

  1. AlertDialog.Builder builder = new AlertDialog.Builder(UserInformationActivity.this,AlertDialog.THEME_HOLO_LIGHT);這種形式的,其中「AlertDialog.THEME_HOLO_LIGHT」設置背景,這個是白色的

  2. 把Activity設置成dialog的,修改AndroidManifest.xml中該Activity的theme,如:android:theme="@android:style/Theme.Holo.Light.Dialog.NoActionBar" ,這樣這個Activity會以dialog的形式彈出,並且是白色的

  3. 自己寫一個自定義dialog繼承dialog,你dialog的布局文件的最外層layout背景顏色設置成白色的

③ android怎麼定義有選擇的dialog

第一個需求:簡單的自定義dialog
需求:創建一個dialog,該dialog具備以下功能:
1.有一個窗口可以顯示文章
2.根據需求顯示
1)點擊同意(不同意),觸發對應的事件(同意的事件會彈出一個Toast,不同意則會關閉程序)
2)點擊關閉,關閉dialog
1.在main.xml文件中設定一個按鈕,點擊會彈出dialog
View Code
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"
android:id="@+id/btn"
android:background="@drawable/sl_btn_red" />
</RelativeLayout>2.創建dialog的內容布局,布局中設定了使用相對布局設定了三個按鈕,其中兩個一起出現(同意和不同意),另外一個單獨出現(關閉)默認是兩個出現
View Code
private TextView btnClose = null;
private TextView btnAgree = null;
private TextView btnDisagree = null;
private WebView mWebView = null;
public MyDialog(Context context) {
super(context, R.style.item_tnc_dialog);
setCancelable(false); // 阻止返回鍵的響應
setContentView(R.layout.dialog_view);
getWindow().setLayout(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
setUpView();
}
private void setUpView() {
mWebView = (WebView) findViewById(R.id.item_tnc_dialog_webview);
btnClose = (TextView) findViewById(R.id.item_tnc_dialog_close);
btnAgree = (TextView) findViewById(R.id.item_tnc_dialog_agree);
btnDisagree = (TextView) findViewById(R.id.item_tnc_dialog_disagree);
btnClose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dismiss();
}
});
btnDisagree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
System.exit(0);
}
});
btnAgree.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Toast.makeText(getContext(), "YOU SELECTED AGREE",
Toast.LENGTH_SHORT).show();
dismiss();

}
});
showDialog();
}
/** 載入webview的內容 */
public void showDialog() {

String localHtml = "file:///android_asset/los.html";

if (mWebView != null) {
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
mWebView.loadUrl(localHtml);
}
buttonsDisplayTwo(false);
}
/** 當true的時候,出現同意和不同意兩個選項,反之是關閉選項 */
private void buttonsDisplayTwo(boolean two) {
btnAgree.setVisibility(two ? View.VISIBLE : View.GONE);
btnDisagree.setVisibility(two ? View.VISIBLE : View.GONE);
btnClose.setVisibility(two ? View.GONE : View.VISIBLE);
}3.main.activity的代碼就不寫了。。直接寫自定義的dialog代碼

View Code
private TextView btnClose = null;
private TextView btnAgree = null;
private TextView btnDisagree = null;

private WebView mWebView = null;

public MyDialog(Context context) {
super(context, R.style.item_tnc_dialog);

setCancelable(false); // 阻止返回鍵的響應
setContentView(R.layout.dialog_view);
getWindow().setLayout(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
setUpView();

}
private void setUpView() {
mWebView = (WebView) findViewById(R.id.item_tnc_dialog_webview);
btnClose = (TextView) findViewById(R.id.item_tnc_dialog_close);

btnAgree = (TextView) findViewById(R.id.item_tnc_dialog_agree);
btnDisagree = (TextView) findViewById(R.id.item_tnc_dialog_disagree);

btnClose.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
dismiss();
}
});

btnDisagree.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
dismiss();
System.exit(0);
}
});
btnAgree.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Toast.makeText(getContext(), "YOU SELECTED AGREE",
Toast.LENGTH_SHORT).show();
dismiss();
}
});
showDialog();
}

/** 載入webview的內容 */
public void showDialog() {

String localHtml = "file:///android_asset/los.html";

if (mWebView != null) {
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
mWebView.loadUrl(localHtml);
}
buttonsDisplayTwo(false);
}
/** 當true的時候,出現同意和不同意兩個選項,反之是關閉選項 */
private void buttonsDisplayTwo(boolean two) {
btnAgree.setVisibility(two ? View.VISIBLE : View.GONE);
btnDisagree.setVisibility(two ? View.VISIBLE : View.GONE);
btnClose.setVisibility(two ? View.GONE : View.VISIBLE);
}

④ android 自定義的dialog,edit text 不能獲得焦點,彈出軟鍵盤。

1、首先自定義布局
2、把自定義布局放入dialog中顯示
3、通過自定義布局查找對應的edittext組件
final View DialogView = a .inflate ( R.layout.loand, null);//1、自定義布局
//創建對話框
AlertDialog dlg = new AlertDialog.Builder(loand.this)
.setTitle("登錄框")
.setView(DialogView)//設置自定義對話框的樣式,2、自定義布局放入dialog中顯示
.setPositiveButton("登陸", //設置"確定"按鈕
new DialogInterface.OnClickListener() //設置事件監聽{
public void onClick(DialogInterface dialog, int whichButton){editText1 =(EditText) DialogView.findViewById(R.id.editText1);
editText2 =(EditText) DialogView.findViewById(R.id.editText2);//3、過自定義布局查找對應的edittext組件
String id = editText1.getText().toString();
String password = editText2.getText().toString();

⑤ [Android] 自定義 Dialog 布局設置固定寬高無效

Dialog 的自定義布局的根布局的寬度是寫固定的,顯示的時候寬度和高度不是對應的固定值。

根布局外面又添加了一層 FrameLayout,設置其寬高均為 wrap_content 來包裹以前的布局。

這個時候猜測是否因為添加自定義視圖的時候,布局參數被改寫了,然後開始查看源碼,最終發現確實是這樣的。

在下面的源碼分析中,最終發現也是用了 mWindow.setContentView(mAlertDialogLayout) 將 R.layout.alert_dialog.xml 的默認布局添加到 PhoneWindow, 和Activity一樣的。

關鍵的地方看一下 setupCustomContent() 這個方法,在添加自定義視圖的時候布局參數設置為 MATCH_PARENT 了,所以我們設置固定大小是沒有作用的,要套一層父布局解決這個問題。

⑥ android xutils 怎麼定義dialog

做Android應用中,最缺少不了的就是自定義Dialog,對於系統默認提供的Dialog樣式,一般都不復合應用的樣式。
自定義Dialog需要3步驟即可:
1、主要的重寫Dialog的java
2、自定義布局文件、並設置Dialog Theme,在style.xml文件中加一個即可
3、使用方法

一、創建CustomPopDialog2.java類
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager.LayoutParams;
import android.widget.ImageView;

/**
* 該自定義Dialog應用在:彈出框居中顯示圖片,點擊其他區域自動關閉Dialog
*
* @author SHANHY([email protected])
* @date 2015年12月4日
*/
public class CustomPopDialog2 extends Dialog {

public CustomPopDialog2(Context context) {
super(context);
}

public CustomPopDialog2(Context context, int theme) {
super(context, theme);
}

public static class Builder {
private Context context;
private Bitmap image;

public Builder(Context context) {
this.context = context;
}

public Bitmap getImage() {
return image;
}

public void setImage(Bitmap image) {
this.image = image;
}

public CustomPopDialog2 create() {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final CustomPopDialog2 dialog = new CustomPopDialog2(context,R.style.Dialog);
View layout = inflater.inflate(R.layout.dialog_share_qrcode, null);
dialog.addContentView(layout, new LayoutParams(
android.view.ViewGroup.LayoutParams.WRAP_CONTENT
, android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
dialog.setContentView(layout);
ImageView img = (ImageView)layout.findViewById(R.id.img_qrcode);
img.setImageBitmap(getImage());
return dialog;
}
}
}

這里簡單說明下,我們自定義Dialog需要准備一個自己的View布局文件,主要關注create()方法即可,本例中就是直接顯示一個圖片。

二、自定義View的布局文件、並在style.xml中添加theme
<?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" android:gravity="center"
android:id="@+id/rootLayout">

<ImageView
android:id="@+id/img_qrcode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="二維碼" />

</LinearLayout>
<style name="Dialog" parent="android:style/Theme.Dialog">
<item name="android:background">#00000000</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
</style>

三、使用自定義的Dialog
Bitmap bitmap = xxxxx;// 這里是獲取圖片Bitmap,也可以傳入其他參數到Dialog中
CustomPopDialog2.Builder dialogBuild = new CustomPopDialog2.Builder(context);
dialogBuild.setImage(bitmap);
CustomPopDialog2 dialog = dialogBuild.create();
dialog.setCanceledOnTouchOutside(true);// 點擊外部區域關閉
dialog.show();

⑦ android中 自定義dialog用不用注冊

dialog 不需要注冊啊。
直接new出來,和系統的dialog一樣的操作啊
new CustomDialog(context).show();

⑧ android怎樣自定義dialog

在android學習中大家對於android很多東西,都有了新的了解或者說真正的掌握,關於dialog實例大家一定會經常用到,但如何才能更好的設計使它符合自己的需求,本篇將會為大家講述。
第一個需求:簡單的自定義dialog
需求:創建一個dialog,該dialog具備以下功能:
1.有一個窗口可以顯示文章
2.根據需求顯示
1)點擊同意(不同意),觸發對應的事件(同意的事件會彈出一個Toast,不同意則會關閉程序)
2)點擊關閉,關閉dialog
1.在main.xml文件中設定一個按鈕,點擊會彈出dialog
View Code
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"
android:id="@+id/btn"
android:background="@drawable/sl_btn_red" />
</RelativeLayout>2.創建dialog的內容布局,布局中設定了使用相對布局設定了三個按鈕,其中兩個一起出現(同意和不同意),另外一個單獨出現(關閉)默認是兩個出現
View Code
private TextView btnClose = null;
private TextView btnAgree = null;
private TextView btnDisagree = null;
private WebView mWebView = null;
public MyDialog(Context context) {
super(context, R.style.item_tnc_dialog);
setCancelable(false); // 阻止返回鍵的響應
setContentView(R.layout.dialog_view);
getWindow().setLayout(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
setUpView();
}
private void setUpView() {
mWebView = (WebView) findViewById(R.id.item_tnc_dialog_webview);
btnClose = (TextView) findViewById(R.id.item_tnc_dialog_close);
btnAgree = (TextView) findViewById(R.id.item_tnc_dialog_agree);
btnDisagree = (TextView) findViewById(R.id.item_tnc_dialog_disagree);
btnClose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dismiss();
}
});
btnDisagree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
System.exit(0);
}
});
btnAgree.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Toast.makeText(getContext(), "YOU SELECTED AGREE",
Toast.LENGTH_SHORT).show();
dismiss();


}
});
showDialog();
}
/** 載入webview的內容 */
public void showDialog() {

String localHtml = "file:///android_asset/los.html";

if (mWebView != null) {
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
mWebView.loadUrl(localHtml);
}
buttonsDisplayTwo(false);
}
/** 當true的時候,出現同意和不同意兩個選項,反之是關閉選項 */
private void buttonsDisplayTwo(boolean two) {
btnAgree.setVisibility(two ? View.VISIBLE : View.GONE);
btnDisagree.setVisibility(two ? View.VISIBLE : View.GONE);
btnClose.setVisibility(two ? View.GONE : View.VISIBLE);
}3.main.activity的代碼就不寫了。。直接寫自定義的dialog代碼

View Code
private TextView btnClose = null;
private TextView btnAgree = null;
private TextView btnDisagree = null;

private WebView mWebView = null;

public MyDialog(Context context) {
super(context, R.style.item_tnc_dialog);

setCancelable(false); // 阻止返回鍵的響應
setContentView(R.layout.dialog_view);
getWindow().setLayout(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
setUpView();

}
private void setUpView() {
mWebView = (WebView) findViewById(R.id.item_tnc_dialog_webview);
btnClose = (TextView) findViewById(R.id.item_tnc_dialog_close);

btnAgree = (TextView) findViewById(R.id.item_tnc_dialog_agree);
btnDisagree = (TextView) findViewById(R.id.item_tnc_dialog_disagree);

btnClose.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
dismiss();
}
});

btnDisagree.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
dismiss();
System.exit(0);
}
});
btnAgree.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Toast.makeText(getContext(), "YOU SELECTED AGREE",
Toast.LENGTH_SHORT).show();
dismiss();
}
});
showDialog();
}

/** 載入webview的內容 */
public void showDialog() {

String localHtml = "file:///android_asset/los.html";

if (mWebView != null) {
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
mWebView.loadUrl(localHtml);
}
buttonsDisplayTwo(false);
}
/** 當true的時候,出現同意和不同意兩個選項,反之是關閉選項 */
private void buttonsDisplayTwo(boolean two) {
btnAgree.setVisibility(two ? View.VISIBLE : View.GONE);
btnDisagree.setVisibility(two ? View.VISIBLE : View.GONE);
btnClose.setVisibility(two ? View.GONE : View.VISIBLE);
}

⑨ android datepickerdialog 怎麼自定義

<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<DatePicker
android:id="@+id/datePicker"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnersShown="true"
android:calendarViewShown="false"
/>
<TimePicker
android:id="@+id/timePicker"
android:layout_gravity="center_horizontal"
android:layout_width="145dp"
android:layout_height="wrap_content"/>
</LinearLayout>

自定義一個dialog,使用自定義布局,布局裡面加入DatePicker(日期選擇控制項)或者TimePicker(時間選擇控制項),在主類中設置相應的監聽器就能獲取時間了。

當然這樣製作出來的時間選擇器的選擇控制項依然是系統自帶的,只能有限的幾種style,如果覺得不好看,只能自己使用各種基礎控制項和自定義邏輯來構建了。比如:用listView來滑動選擇時間,用button來控制listView滾動等等。

純手打~

⑩ Android如何調用其他的布局顯示在對話框中

自定義Dialog。
1、編寫自定義布局。
2、繼承Dialog,覆蓋構造方法。
3、覆蓋onCreate(),初始化控制項。以上就是Android調用其他的布局顯示在對話框中的方法。

閱讀全文

與android中自定義dialog相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163