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
上传中...
上传图片
插入图片