在我的视图中遇到布局截止/偏移问题

时间:2010-12-13 10:15:47

标签: android android-layout

我的布局以纵向/横向模式显示时出现问题。基本上,我的布局的层次结构如下所示:Main(工作区视图) - > TextView + Listview(带BaseAdapter) - > Listview项目。

我的问题是,如果我以纵向模式开始,我的项目应该正确显示。但是如果我旋转设备,那么我的整个布局会移动大约半个屏幕(即当我切换时,视图左侧的大约一半是完全黑色的,并且它认为我真正的“左边缘”是在屏幕中间 - 我可以看到应该在中间对齐的项目。另一方面,如果我以横向模式开始并切换到纵向模式,屏幕右侧的一半是完全黑色,“右边缘”位于中间,我可以看到最右边的项目在那里结束。

这是我正在使用的布局...... 首先是我在工作区中的视图(Listview使用BaseAdapter):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView android:id="@+id/tvMainChannel"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Disconnected"
        android:textColor="#FFFFFF"
        android:singleLine="true"/>

    <ListView android:id="@android:id/list"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"/>
</LinearLayout>

这是我的个人listview项目,它们被夸大到上面的ListView中(水平排列,每个项目应该从左到右显示:Image,Text,Image):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:orientation="horizontal">

    <ImageView android:id="@+id/images"
        android:layout_height="30dp"
        android:layout_width="wrap_content"
        android:paddingLeft="5px"
        android:paddingRight="5px"
        android:layout_alignParentLeft="true"/>

    <ImageView android:id="@+id/images_ping"
        android:layout_height="30dp"
        android:layout_width="wrap_content"
        android:paddingLeft="5px"
        android:paddingRight="5px"
        android:layout_alignParentRight="true"/>

    <TextView android:id="@+id/text"
        android:layout_height="30dp"
        android:layout_width="wrap_content"
        android:gravity="center_vertical"
        android:text="Username"
        android:textColor="#FFFFFF"
        android:layout_toRightOf="@+id/images"/>

</RelativeLayout>

我尝试在线性和亲戚之间切换,但我没有在哪里......有点不知道可能是什么原因。

非常感谢任何见解。

谢谢!

编辑:为了进一步澄清,这是我使用Workspace的main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<com.test.MultiView xmlns:app="http://schemas.android.com/apk/res/com.test"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mvMain"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    app:default_screen="0">

    <include android:id="@+id/main_rtb" layout="@layout/main_rtb" />
    <include android:id="@+id/main_listview" layout="@layout/main_listview" />
</com.test.MultiView>

1 个答案:

答案 0 :(得分:1)

<强>更新

这个问题的实际答案是自定义顶级布局组件的问题,最初从问题中省略,并且是从stackoverflow上的其他位置调整的。有关详细信息,请参阅此答案的评论。

原始答案(完全不正确,但并非完全没用)

问题必须出在您的项目布局中。建议使用LinearLayout('orientation'属性对RelativeLayout无效),如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:orientation="horizontal">

    <ImageView android:id="@+id/images"
        android:layout_height="30dp"
        android:layout_width="wrap_content"
        android:paddingLeft="5px"
        android:paddingRight="5px"
        />


    <TextView android:id="@+id/text"
        android:layout_height="30dp"
        android:layout_width="wrap_content"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:text="Username"
        android:textColor="#FFFFFF"
        />

    <ImageView android:id="@+id/images_ping"
        android:layout_height="30dp"
        android:layout_width="wrap_content"
        android:paddingLeft="5px"
        android:paddingRight="5px"
        />

</LinearLayout>

请注意使用android:layout_weight并删除RelativeLayout - 特定属性android:layout_alignParentLeftandroid:layout_alignParentRight