将我的Android手机从potrait转为landscpe,导致列表视图中的所有列表项都会调整大小。 ListView未正确刷新。列表视图宽度不会在方向更改时填充父级。我在清单文件中为我的活动尝试了 configChanges:orientation ,但结果仍然相同。
图片如下所示:
potrait:
风景:
整个行都在改变方向。
下面提到了使用的xml布局:
<LinearLayout
a:id="@+id/web_watch_list_modifier_row_body"
a:visibility="visible"
a:gravity="center"
a:background="@drawable/list_selector"
a:layout_height="wrap_content"
a:layout_width="fill_parent"
a:orientation="horizontal">
<EditText
a:id="@+id/watch_list_name_text_box"
a:layout_height="40dip"
a:layout_width="0dip"
a:layout_marginLeft="2dp"
a:maxLength="32"
a:singleLine="true"
a:layout_weight="40"/>
<ImageView
a:id="@+id/dragImageView"
a:background="@drawable/drag_button_img"
a:layout_height="wrap_content"
a:layout_width="wrap_content"/>
</LinearLayout>
等待你的宝贵建议......
答案 0 :(得分:0)
首先将a:layout_width或LinearLayout更改为“match_parent” 我不确定当其他元素没有重量时layout_weight =“40”会达到什么效果,请尝试1。
我会尝试使用RelativeLayout,就像这样(没有检查xml的正确性):
<RelativeLayout
a:id="@+id/web_watch_list_modifier_row_body"
a:background="@drawable/list_selector"
a:layout_height="wrap_content"
a:layout_width="match_parent" >
<EditText
a:id="@+id/watch_list_name_text_box"
a:layout_height="40dip"
a:layout_width="0dip"
a:layout_marginLeft="2dp"
a:maxLength="32"
a:singleLine="true"
a:layout_alignParentLeft="true"
/>
<ImageView
a:id="@+id/dragImageView"
a:background="@drawable/drag_button_img"
a:layout_height="wrap_content"
a:layout_width="wrap_content"
a:layout_alignParentRight="true"
a:layout_toLeftOf="@id/watch_list_name_text_box" />
</RelativeLayout>
如果您没有声明android:configChanges,那么当您更改方向时,您的活动会重新启动,如果您需要的是适合新方向的布局,则不希望这样。
重要提示,如果目标版本高于13,则需要声明“screenSize” 机器人:configChanges = “方向|屏幕尺寸” http://developer.android.com/guide/topics/manifest/activity-element.html#config
如果仍然无效,请尝试覆盖onConfigurationChanged()并使ListView无效
答案 1 :(得分:0)
每次旋转设备时,活动都会重新启动..这可能是EditText调整大小的原因......
尝试在清单文件中添加此内容,
android:configChanges="orientation|keyboardHidden"
您也可以查看http://developer.android.com/guide/topics/resources/runtime-changes.html。