2 zhenglingkun zhenglingkun 于 2012.12.17 14:48 提问

Dialog的横坚屏切换问题!

问题描述:我这里要实现一个拍照的功能,点击拍照,弹出一个Dialog显示你拍的照片并提示你是否保存,这时我还没有保存,然后我切换屏幕变成横屏,这时Dialog只显示了一半,提示你保存的那一部分没有了,不知道什么原因。
下面是我创建Dialog的代码:

private intiBuilderDialog() {
            if (builder == null || !builder.isShowing()) {
                        builder = new Dialog(SamplingCamActivity.this, R.style.mydialog);
                        builder.setContentView(R.layout.img);
                        LayoutParams lay = builder.getWindow().getAttributes();
                        setParams(lay);
                        builder.show();
        }
}
    private void setParams(LayoutParams lay) {
            DisplayMetrics dm = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(dm);
            Rect rect = new Rect();
            View view = getWindow().getDecorView();
            view.getWindowVisibleDisplayFrame(rect);
            lay.height = dm.heightPixels - rect.top;
            lay.width = dm.widthPixels;
        }

下面是创建Dialog的Style:

<style name="mydialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:backgroundDimEnabled">false</item>
        <item name="android:windowBackground">@color/transparent</item>
        <item name="android:windowAnimationStyle">@style/DialogAnimation</item>
    </style>`enter code here

下面是Dialog的xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:background="@drawable/camera_preview_back"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/check_picture"
        android:textColor="#ffffff"
        android:textSize="@dimen/TitleTextSize"
        android:textStyle="bold"
        android:paddingLeft="20dp"
        android:paddingTop="5dp" 
        android:paddingBottom="5dp"/>

    <View
        android:layout_width="fill_parent"
        android:layout_height="1.0px"
        android:background="@drawable/camera_preview_line" />

    <ImageView
        android:id="@+id/ImageView01"
        android:layout_width="240dp"
        android:layout_height="320dp"
        android:layout_gravity="center"
        android:layout_margin="10.0dip" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1.0px"
        android:background="@drawable/camera_preview_line" />

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" >

        <Button
            android:id="@+id/preview_cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_gravity="center_vertical"
            android:layout_marginRight="10.0dip"
            android:text="@string/cancel" 
            android:background="@drawable/image_icon"
            android:textColor="@drawable/text_color"/>

        <Button
            android:id="@+id/preview_confirm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginRight="10.0dip"
            android:layout_toLeftOf="@id/preview_cancel"
            android:text="@string/accept"
            android:background="@drawable/image_icon"
            android:textColor="@drawable/text_color" />
    </RelativeLayout>

</LinearLayout>

下面是我在横坚屏切换时作的处理:也就是重新再创建一遍Dialog:

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        // TODO Auto-generated method stub
        super.onConfigurationChanged(newConfig);
        if (builder != null && builder.isShowing()) {
            builder.dismiss();
            intiBuilderDialog();
        }
    }

2个回答

baimy1985
baimy1985   2012.12.17 21:51
已采纳

如果是自己写布局生成Dialog的话,横竖屏是不是应该写两套分别加载才好,android源码中音乐播放器的自定义dialog布局都是横竖屏区分的。

zhenglingkun
zhenglingkun 我那个ImageView是设定固定高和宽的,如果是横竖屏两个布局的话,是不是得修改ImageView的高和宽?
5 年多之前 回复
cytown
cytown   2012.12.18 11:15

外面套个scrollview,这样就可以滚动了,同时把button外面的layout放在scrollview外面,保证其一定显示。

cytown
cytown 除了button所在的layout以外的都放进去
5 年多之前 回复
zhenglingkun
zhenglingkun 是将ImageView放到一个ScrollView里面吗?
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Zxing横竖屏切换方法
Zxing Zxing横竖屏切换只需要修改 1、竖屏在DecodeHandler类中加上下面这段代码,横屏注释掉这段代码 byte[] rotatedData = new byte[data.length]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++)
Android8.0下切换横竖屏幕时Activity的生命周期。
一、前言 看了一些关于切换屏幕时Activity生命周期变化的博客,初步理解了切换屏幕时的变化过程(私以为,默认情况下之所以切换横竖屏时会重新加载活动,是为了更好的用户体验哈哈)。但是因API版本号以及收集型号的不一样,这个过程都会略有不同。——————&amp;gt;所以我现在比较新的8.0系统下测试一番。 二、测试环境 安卓版本:android 8.0—API26 手机型号:Nexus_5X ...
android onSaveInstanceState方法 横坚屏切换
android onSaveInstanceState方法   1. onSaveInstanceState和onRestoreInstanceState基本作用     onSaveInstanceState是用来保存UI状态的,你可以使用它保存你所想保存的东西,在Activity杀死之前,它一般在onStop或者onPause之前触发,onRestoreInstanceState则是
android onSaveInstanceState方法 横坚屏切换
android onSaveInstanceState方法   1. onSaveInstanceState和onRestoreInstanceState基本作用     onSaveInstanceState是用来保存UI状态的,你可以使用它保存你所想保存的东西,在Activity杀死之前,它一般在onStop或者onPause之前触发,onRestoreInstanceState则是在on
横竖屏显示 图片分辨率
1、         设置屏幕的横竖屏显示: 如果不做特殊说明,开发的应用是横竖屏重力敏感的,如果禁止横竖屏切换,需要在AndroidManifest.xml文件中做相应的修改: ".MenuView"                      android:label="@string/app_name"                    android:scree
N皇后问题扩张(算法训练 王 后问题)
算法训练 王、后传说   时间限制:1.0s   内存限制:256.0MB      问题描述   地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横、坚、斜线位置。   看过清宫戏的中国人都知道,后宫乃步步惊心的险恶之地。各皇后都有自己的势力范围,但也总能找到相安无事的办法。   所有中国人都知道,皇权神圣,伴君如伴虎,触龙颜者死.....
js/css 检测移动设备方向的变化 判断横竖屏幕
方法一:用触发手机的横屏和竖屏之间的切换的事件
坚屏改横屏教程(apk反编译基础教程)
原文地址::http://www.google.com.hk/url?q=http://bbs.gfan.com/android-1164690-1-1.html&sa=U&ei=bnaNT6jYEIjqrQf32vXJCQ&ved=0CBgQFjAB&usg=AFQjCNGewTy8Pl1XKi7qfOb3YrWnt1USPw   相关网帖 1.软件横屏+全屏修改教程----http://
Activity 动态 强制 切换横竖屏 生命周期重载
动态切换横竖屏 public void changeScreenOrientation(View view) { /** 设置为横屏*/ if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){ setRequestedOrientation(ActivityInfo.SCREEN_ORIEN
Android 横坚屏切换问题,黑白棋游戏
最近写了个黑白棋的游戏,棋秀盘是自定义View画的,起初的时候用的是以屏幕的宽度为基准画的棋盘,这样有一个问题,就是在横坚屏切换时棋盘的线会超出屏幕,后来在view内找了个方法onSizeChanged(int w, int h, int oldw, int oldh)。     这个方法在横坚屏切换时,我们可以对屏的值进行操作。在此游戏里的应用如下:   @Override  protec