自定義Dialog,背景,大小,位置。
阿新 • • 發佈:2019-02-08
1.要替換原有dialog的背景需要:使用自己的style,R.style.xxxx.xml
2.修改大小和位置需要:修改它的Layoutparams,就像修改view的Layoutparams類似:
Window dialogWindow=this.getWindow(); WindowManager.LayoutParams lp = dialogWindow.getAttributes(); lp.gravity=Gravity.CENTER_VERTICAL; DisplayMetrics d =context.getResources().getDisplayMetrics(); //獲取螢幕寬、高用 lp.width = (int) (d.widthPixels * 0.8); // 寬度設定為螢幕的0.8 dialogWindow.setAttributes(lp);
我的一個例子:
Dialog類
/** * 提示使用者-顯示命令 */ public class VoiceTipDialog extends AlertDialog implements View.OnClickListener { private TextView mContent; private Button mBtnShow, mBtnTry; private Context context; public VoiceTipDialog(Context context, int themeResId) { super(context, themeResId); this.context=context; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_voice_tip); initView(); setlistener(); } private voidsetlistener() { mBtnShow.setOnClickListener(this); mBtnTry.setOnClickListener(this); } private void initView() { Window dialogWindow=this.getWindow(); WindowManager.LayoutParams lp = dialogWindow.getAttributes(); lp.gravity=Gravity.CENTER_VERTICAL; DisplayMetrics d =context.getResources().getDisplayMetrics(); // 獲取螢幕寬、高用 lp.width = (int) (d.widthPixels * 0.8); // 寬度設定為螢幕的0.8 dialogWindow.setAttributes(lp); //init mContent = (TextView)findViewById(R.id.content_tip); mContent.setText(Html.fromHtml(context.getString(R.string.voice_tip_content))); mBtnShow = (Button) findViewById(R.id.btn_donotshow_tip); mBtnTry = (Button) findViewById(R.id.btn_try_tip); } private VoiceTipDialogClickListener mOnClickListener; @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_donotshow_tip: mOnClickListener.showAagin(false); break; case R.id.btn_try_tip: mOnClickListener.dismiss(); break; } } public interface VoiceTipDialogClickListener { void showAagin(boolean visiable); void dismiss(); } public void setListener(VoiceTipDialogClickListener listener) { mOnClickListener = listener; } }
style樣式:
<style name="MyDialog" parent="@android:style/Theme.Dialog"> <!-- 這裡設定背景為透明,為了隱藏邊框 --> <item name="android:windowFrame">@null</item><!--邊框--> <item name="android:windowBackground">@android:color/transparent</item><!--背景透明--> <item name="android:windowNoTitle">true</item> <!-- 這裡是修改頂部標題背景顏色,具體顏色自己定,可以是圖片 --> <item name="android:topDark">@android:color/transparent</item> <!-- 這裡是修改內容區域背景顏色 --> <item name="android:windowIsTranslucent">true</item><!--半透明--> <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item> <!-- <item name="android:windowIsFloating">true</item>--><!--是否浮現在activity之上--> <!----> <item name="android:backgroundDimEnabled">false</item><!--模糊--> </style>
好了,直接建立物件就能使用了,我這裡都是寫死的,沒擴張性,請根據需要自行修改。還有我也是菜雞。