问题描述
- 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(); } }
解决方案
如果是自己写布局生成Dialog的话,横竖屏是不是应该写两套分别加载才好,android源码中音乐播放器的自定义dialog布局都是横竖屏区分的。
解决方案二:
外面套个scrollview,这样就可以滚动了,同时把button外面的layout放在scrollview外面,保证其一定显示。
时间: 2024-10-26 05:24:26