我有非常简单的对话框布局并添加了scrollview,因为对话框可能很长而且不适合屏幕 当我最初运行对话框(它适合屏幕)一切都很好,然后我将设备方向更改为横向,对话框不再适合屏幕,滚动出现,但几个顶部元素(最多@ + id / addr_label)变得不可见虽然Title和第一个可见元素之间存在一些空白空间。最令人困惑的是 - 当我将设备更改回纵向视图时 - 这些元素仍然是不可见的。
更新:刚刚检查手机最初处于横向模式时的情况 - 在这种情况下,所有元素都正确显示。当我把它改回肖像时 - 元素消失了。似乎是一个“改变方向”的错误
可能有什么问题?
布局和截图如下(Android为2.3.5)
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root22" android:orientation="vertical"
android:layout_width="wrap_content" android:layout_height="fill_parent"
android:padding="0dp">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root" android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:padding="10dp">
<TextView android:id="@+id/details_ssid"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text=""
android:layout_marginLeft="5dip"/>
<TextView android:id="@+id/details_bssid"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:layout_marginLeft="5dip"/>
<TextView android:id="@+id/latitude"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:layout_marginLeft="5dip"/>
<TextView android:id="@+id/longitude"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:layout_marginLeft="5dip"/>
<TextView android:id="@+id/addr_label"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/address_label"
android:layout_weight="1"
android:layout_marginLeft="5dip"/>
<EditText android:id="@+id/address"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:layout_marginLeft="5dip"/>
<TextView android:id="@+id/descr_label"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/description_label"
android:layout_weight="1"
android:layout_marginLeft="5dip"/>
<EditText android:id="@+id/description"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:layout_marginLeft="5dip"/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root" android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="10dp">
<Button
android:id="@+id/yes"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:layout_marginTop="10dip"
android:layout_marginRight="10dip"
android:text= "@string/Yes"
android:visibility="visible"
/>
<Button
android:id="@+id/no"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginTop="10dip"
android:layout_marginRight="10dip"
android:text= "@string/No"
android:visibility="visible"
/>
</LinearLayout>
</LinearLayout>
</ScrollView>
代码非常无聊: Activity中的onCreateDialog设置布局和 onPrepareDialog whic为所有这些字段设置值
onCreateDialog
case CONFIRM_SHARE_AP:
{
final Dialog dialog = new Dialog(this){
public void onBackPressed()
{
dismissDialog(CONFIRM_SHARE_AP);
}
};
dialog.setContentView(R.layout.ap_add_confirmation);
dialog.setTitle(R.string.confirm_share);
Button cancel = (Button) dialog.findViewById(R.id.no);
cancel.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
dismissDialog(CONFIRM_SHARE_AP);
}
});
return dialog;
}
onPrepareDialog 根本没有任何具体内容
答案 0 :(得分:0)
找到了问题的根源。 这是因为在方向更改期间,活动会重新启动(默认情况下),因此会重新创建对话框。