自定义dialogactivity -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    android自带的dialog样式一般不满足自己的要求,那就要求dialog自定义,

自定义dialogactivity

    其实,activity也是可以以dialog的形式存在的,我们只需在清单文件中设置其theme属性即可:

    android:name=".EditActivity"

    android:theme="@android:style/Theme.Dialog"

    >

    一般的activity形式的dialog,触摸其外部都是会dismiss的,那么,我们如何避免其被dismiss掉呢?

    要想实现这一点,其实只需一句代码:

    setFinishOnTouchOutside(false)即可,这有点像popupwindow的setOutsideTouchable(false);

    要做到按返回键也不消失的话,只需屏蔽返回键或重写backpress方法

    @Override

    public boolean onKeyDown(int keyCode, KeyEvent event) {

    if(keyCode == KeyEvent.KEYCODE_BACK){

    return true;

    }

    return super.onKeyDown(keyCode, event);

    }

    @Override

    public void onBackPressed() {

    ////在默认情况下是会调用finish()方法的

    ///super.onBackPressed();

    }

    /////这个是activity本来要实现的方法

    public void onBackPressed() {

    if (!mFragments.popBackStackImmediate()) {

    finish();

    }

    }

    这样做还不够,activity以dialog的形式显示,宽度会比较小,这就需要我们自己给定宽度了:

    WindowManager manager = getWindowManager();

    DisplayMetrics displayMetrics = new DisplayMetrics();

    Display display = manager.getDefaultDisplay();

    display.getMetrics(displayMetrics);

    int width = displayMetrics.widthPixels;

    int height = displayMetrics.heightPixels;

    WindowManager.LayoutParams params = getWindow().getAttributes();

    params.width = (int) (width*0.8);

    getWindow().setAttributes(params);

    这样我们就设置好了activity的宽度了,

电脑资料

自定义dialogactivity》(https://www.unjs.com)。

最新文章