您好,登錄后才能下訂單哦!
如何在Android中自定義dialog實現自下往上彈出?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
具體代碼如下所示:
package com.example.idmin.myapplication.wiget; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import android.widget.TextView; import com.example.idmin.myapplication.R; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class BottomDialog extends Dialog { @BindView(R.id.chang) TextView chang; @BindView(R.id.exite) TextView exite; @BindView(R.id.cancel) TextView cancel; private BottomDialogAlertListener listener; private Object param; private String text1; private String text2; private String cansleText; public BottomDialog(Context context, BottomDialogAlertListener listener, Object param, String text1, String text2, String cansleText) { super(context, R.style.dialog1); this.listener = listener; this.param = param; this.text1 = text1; this.text2 = text2; this.cansleText = cansleText; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_bottom); ButterKnife.bind(this); setCancelable(false); setCanceledOnTouchOutside(false); if (listener != null) { listener.onDialogCreate(this, param); } setView(); } private void setView() { chang.setText(text1); exite.setText(text2); cancel.setText(cansleText); } @OnClick({R.id.chang, R.id.exite, R.id.cancel}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.chang: if (listener != null) { listener.chenge(this,param); } break; case R.id.exite: if (listener != null) { listener.excite(this,param); } break; case R.id.cancel: if (listener != null) { listener.cancel(this,param); } break; } } @Override public void show() { super.show(); /** * 設置寬度全屏,要設置在show的后面 */ WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); layoutParams.gravity = Gravity.BOTTOM; layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; getWindow().getDecorView().setPadding(0, 0, 0, 0); getWindow().setAttributes(layoutParams); } } <!-- 自定義dialog樣式 --> <style name="dialog1" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">false</item> <item name="android:windowNoTitle">true</item> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:layout_width">match_parent</item> <!-- 進入和退出的動畫 --> <item name="android:windowAnimationStyle">@style/BottomDialogAnimation</item> </style> <!-- 進入和退出的動畫 --> <style name="BottomDialogAnimation"> <!--進入 --> <item name="android:windowEnterAnimation">@anim/dialog_enter_from_bottom</item> <!--退出--> <item name="android:windowExitAnimation">@anim/dialog_exit_to_bottom</item> </style> <!--dialog_enter_from_bottom --> <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="200" android:fromYDelta="100%p" android:toYDelta="0"></translate> </set> <!--dialog_exit_to_bottom --> <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="200" android:fromYDelta="0" android:toYDelta="100%p"></translate> </set>
看完上述內容,你們掌握如何在Android中自定義dialog實現自下往上彈出的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。