带有编辑文本行项的Android ListView会在方向更改时调整大小

时间:2013-03-19 05:37:25

标签: listview android-edittext android-orientation

将我的Android手机从potrait转为landscpe,导致列表视图中的所有列表项都会调整大小。 ListView未正确刷新。列表视图宽度不会在方向更改时填充父级。我在清单文件中为我的活动尝试了 configChanges:orientation ,但结果仍然相同。

图片如下所示:

potrait:

enter image description here

风景:

enter image description here

整个行都在改变方向。

下面提到了使用的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>

等待你的宝贵建议......

2 个答案:

答案 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