码迷,mamicode.com
首页 > 其他好文 > 详细

自定义dialog-----activity

时间:2015-04-13 23:02:33      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:activity   dialog   activity触摸外部消失   

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

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

<activity 
            android:name=".EditActivity"
            android:theme="@android:style/Theme.Dialog"
            >
 </activity>

一般的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的宽度了。


自定义dialog-----activity

标签:activity   dialog   activity触摸外部消失   

原文地址:http://blog.csdn.net/chengjiamei/article/details/45031229

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!