WindKun 2012-12-17 06:48 采纳率: 100%
浏览 8784
已采纳

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条回答 默认 最新

  • balmy 2012-12-17 13:51
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器