1. 程式人生 > >自定義Dialog,背景,大小,位置。

自定義Dialog,背景,大小,位置。

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 void
setlistener() { 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>

好了,直接建立物件就能使用了,我這裡都是寫死的,沒擴張性,請根據需要自行修改。還有我也是菜雞。