當前位置:首頁 » 安卓系統 » androiddialog自定義

androiddialog自定義

發布時間: 2023-07-15 07:20:14

1. android如何寫一個自定義的dialog可以在Title的位置彈出來

mDialog=newDialog(context,R.style.customDialog);
mDialog.setContentView(R.layout.dialog_layout);
mDialog.setCanceledOnTouchOutside(true);
WindowManager.LayoutParamsparams=mDialog.getWindow().getAttributes();
params.gravity=Gravity.TOP;//這個設置使這個dialog從上方彈出來
params.windowAnimations=1;

WindowManagermanager=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
Displaydisplay=manager.getDefaultDisplay();
windowHeight =display.getHeight();
windowWidth =display.getWidth();
params.width=windowWidth;
params.height=windowHeight;

mDialog.findViewById(R.id.right_button).setOnClickListener(newView.OnClickListener(){

@Override
publicvoidonClick(Viewv){
mDialog.dismiss();
}
});

mDialog.findViewById(R.id.dropdownBckgrnd).setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
mDialog.dismiss();
}
});

2. android dialog自定義按鈕如何設監聽事件

利用回調方法,在調用處,進行Dialog中各按鈕的事件處理。
view plain
package com.demo;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class LeaveMeetingDialog extends Dialog implements OnClickListener{

private Button quitBtn,stopBtn,cancelBtn;
private LeaveMeetingDialogListener listener;

public interface LeaveMeetingDialogListener{
public void onClick(View view);
}

public LeaveMeetingDialog(Context context,int theme,LeaveMeetingDialogListener listener) {
super(context,theme);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.leave_meeting_dialog);
initViews();
}

private void initViews(){
quitBtn = (Button)findViewById(R.id.quit_btn);
stopBtn = (Button)findViewById(R.id.stop_btn);
cancelBtn = (Button)findViewById(R.id.cancel_btn);

quitBtn.setOnClickListener(this);
stopBtn.setOnClickListener(this);
cancelBtn.setOnClickListener(this);
}

@Override
public void onClick(View v) {
listener.onClick(v);
}

}

---調用處:

[java]
LeaveMeetingDialog dialog = new LeaveMeetingDialog(this,R.style.Theme_CustomDialog,
new LeaveMeetingDialogListener() {
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.quit_btn:break;
case R.id.stop_btn:break;
case R.id.cancel_btn:break;
}
}
});
dialog.show();

3. android自定義dialog為什麼會變形

這段時間在做一個項目,需要使用到自定義Dialog,先在網上找了一下資料,發現還是有很多沒有講清楚的,在此給出一個Demo,一來可以方便廣大碼農,二來也可以方便自己,以備不時之需。。。
先來一張圖吧,很簡單,只有一個Activity,當點擊Button的時候就彈出這個自定義的Dialog

裡面的幾張圖都比較丑,我不多會美工,隨便用powerpoint畫了幾張圖,原理是一樣的,先不計較這些。下面正入正題
為了照顧到所有的碼農,在些把所有的代碼都貼出來
新建工程在此就不貼出來了,只是為了方便大家的復制粘貼,取包名為com.and.mydialog,主Activity取名為MyDialogActivity

package com.and.mydialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MyDialogActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

//初始化一個自定義的Dialog
Dialog dialog = new MyDialog(MyDialogActivity.this,
R.style.MyDialog);

dialog.show();
}
});

}
}

主布局文件main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:text="顯示自定義Dialog"
android:id="@+id/button1"
android:layout_height="wrap_content"
android:layout_width="fill_parent"/>
</LinearLayout>

新建一個自定義的Dialog類,取名MyDialog,繼承自Dialog

package com.and.mydialog;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;

public class MyDialog extends Dialog {

Context context;
public MyDialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
this.context = context;
}
public MyDialog(Context context, int theme){
super(context, theme);
this.context = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.dialog);
}

}


相應的布局文件dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:background="@drawable/dialog_bg">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="30dip"
android:paddingTop="10dip">
<ImageView
android:id="@+id/dialog_title_image"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/dialog_title_image"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_centerInParent="true"
android:text="Title"
android:layout_toRightOf="@id/dialog_title_image"
android:textColor="#000000"
android:textSize="30sp"/>

</RelativeLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="@drawable/lins"
android:layout_marginTop="5dip"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is a custom dialog"
android:textColor="#000000"
android:layout_marginTop="10dip"
android:layout_marginLeft="30dip"/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="10dip"
android:gravity="bottom|center_horizontal"
android:paddingBottom="10dip">
<Button
android:id="@+id/dialog_button_cancel"
android:layout_alignParentLeft="true"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:text="確定"/>
<Button
android:id="@+id/dialog_button_ok"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/dialog_button_cancel"
android:layout_marginLeft="35dip"
android:text="取消"/>
</RelativeLayout>
</LinearLayout>

最主要的,是自定義的Style,我們自定義一個式樣,用來改變默認的Dialog樣式
在values文件夾下新建一個styles.xml文件,如下。。。

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyDialog" parent="@android:Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/dialog_bg</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
</resources>

這樣應該就OK了,為了方便大家測試本示例

4. 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();

5. android 如何讓自定義dialog的寬度充滿整個屏幕

方案:

通過設置Dialog的樣式實現

步驟:

1、添加style
<stylename="Dialog_FS">
<itemname="android:windowFullscreen">true</item>
<itemname="android:windowNoTitle">true</item>
</style>
2、代碼裡面設置dialog的樣式
Dialogdialog=newDialog(this,R.style.Dialog_FS);//設置全屏樣式
dialog.setContentView(R.layout.main);//設置dialog的布局
dialog.show();//顯示dialog界面

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

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

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

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

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

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

熱點內容
python時間毫秒數 發布:2025-02-05 20:51:32 瀏覽:329
clash安卓如何切換節點 發布:2025-02-05 20:48:20 瀏覽:889
怎樣能用到方舟編譯器 發布:2025-02-05 20:47:04 瀏覽:366
資料庫的演算法 發布:2025-02-05 20:25:32 瀏覽:859
微信解壓異常 發布:2025-02-05 20:24:39 瀏覽:493
linux0位元組文件夾 發布:2025-02-05 20:23:07 瀏覽:652
專題的腳本怎麼寫 發布:2025-02-05 20:19:18 瀏覽:923
獨立站買什麼伺服器 發布:2025-02-05 20:13:24 瀏覽:296
android鬧鍾設置 發布:2025-02-05 20:12:29 瀏覽:955
計算機代碼經典編程 發布:2025-02-05 19:25:09 瀏覽:757