自訂Dialog寬度佔滿螢幕,dialog寬度

來源:互聯網
上載者:User

自訂Dialog寬度佔滿螢幕,dialog寬度
一、自訂Dialog繼承Dialog

public class MyDialog extends Dialog {

 

二、為Dialog設定樣式

在style中建立新樣式繼承 

@android:style/Theme.Dialog或者@android:style/Theme.Holo.Dialog
  • 設定樣式去掉邊框
  • 去掉標題
  • 設定視窗透明
  • 設定點擊對話方塊外邊可以消失等
  • 設定動畫

 

 <!-- <style name="MyDialog" parent="@android:style/Theme.Dialog">-->    <style name="MyDialog" parent="@android:style/Theme.Holo.Dialog">        <!-- 是否有邊框 -->        <item name="android:windowFrame">@null</item>        <!--是否在懸浮Activity之上  -->        <item name="android:windowIsFloating">true</item>        <!--標題  -->        <item name="android:windowNoTitle">true</item>        <!--陰影  -->        <item name="android:windowIsTranslucent">true</item><!--半透明-->        <!-- 進入和退出的動畫 -->        <item name="android:windowAnimationStyle">@style/MyDialogAnimation</item>        <!-- 點外邊可以消失  -->        <item name="android:windowCloseOnTouchOutside">true</item>    </style>    <style name="MyDialogAnimation">        <!--進入 -->        <item name="android:windowEnterAnimation">@anim/dialog_enter</item>        <!--退出-->        <item name="android:windowExitAnimation">@anim/dialog_exit</item>    </style>

 

進入動畫

dialog_enter
dialog_exit
系統內建的可以找到直接拿來用在SDK下找到
目錄\sdk\platforms\對應的API版本

<set xmlns:android="http://schemas.android.com/apk/res/android"        android:shareInterpolator="false" >    <scale android:fromXScale="0.9" android:toXScale="1.0"           android:fromYScale="0.9" android:toYScale="1.0"           android:pivotX="50%" android:pivotY="50%"                   android:duration="200" />    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"            android:duration="200" />   </set>

退出

<set xmlns:android="http://schemas.android.com/apk/res/android"     android:shareInterpolator="false">    <scale        android:duration="200"        android:fromXScale="1.0"        android:fromYScale="1.0"        android:pivotX="50%"        android:pivotY="50%"        android:toXScale="0.9"        android:toYScale="0.9"/>    <alpha        android:duration="200"        android:fromAlpha="1.0"        android:toAlpha="0.0"/></set>
三、在構造方法中設定樣式
Context mContext;    public MyDialog(Context context) {        super(context, R.style.MyDialog);        this.mContext=context;            }
四、設定布局
@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.layout_dialog);    }

布局檔案就是2個TextView

五、重寫show方法,設定寬度,高度等
@Override    public void show() {        super.show();        /**         * 設定寬度全屏,要設定在show的後面         */        LayoutParams layoutParams = getWindow().getAttributes();        layoutParams.gravity=Gravity.BOTTOM;        layoutParams.width= LayoutParams.MATCH_PARENT;        layoutParams.height= LayoutParams.WRAP_CONTENT;        getWindow().getDecorView().setPadding(0, 0, 0, 0);        getWindow().setAttributes(layoutParams);    }

 

六、完整Dialog類
/** * Dialog 2016年7月30日 */public class MyDialog extends Dialog {    Context mContext;    public MyDialog(Context context) {        super(context, R.style.MyDialog);        this.mContext=context;            }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.layout_dialog);    }        @Override    public void show() {        super.show();        /**         * 設定寬度全屏,要設定在show的後面         */        LayoutParams layoutParams = getWindow().getAttributes();        layoutParams.gravity=Gravity.BOTTOM;        layoutParams.width= LayoutParams.MATCH_PARENT;        layoutParams.height= LayoutParams.WRAP_CONTENT;        getWindow().getDecorView().setPadding(0, 0, 0, 0);        getWindow().setAttributes(layoutParams);    }    }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.