我的布局以纵向/横向模式显示时出现问题。基本上,我的布局的层次结构如下所示: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>
答案 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_alignParentLeft
和android:layout_alignParentRight
。