2

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

图像如下所示:

肖像:

在此处输入图像描述

景观:

在此处输入图像描述

整行都在改变方向。

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

期待您的宝贵建议...

4

2 回答 2

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” android:configChanges="orientation|screenSize" http://developer.android.com/guide/topics/manifest/activity-element.html#配置

如果这仍然不起作用,请尝试覆盖 onConfigurationChanged() 并使 ListView 无效

于 2013-04-01T12:29:59.157 回答
0

每次旋转设备时,活动都会重新启动.. 可能这就是 EditText 调整大小的原因...

尝试将此添加到您的清单文件中,

android:configChanges="orientation|keyboardHidden"

您也可以查看http://developer.android.com/guide/topics/resources/runtime-changes.html

于 2013-04-01T15:19:04.300 回答