我目前使用的线性布局结构如下所示:
关联的xml代码如下:
<?xml version="1.0" encoding="utf-8"?>
<com.handmark.pulltorefresh.library.PullToRefreshLoadMoreScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/altercolor2"
android:layout_gravity="top">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:baselineAligned="true">
<LinearLayout
android:id="@+id/columnOne"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight=".53"
android:orientation="vertical">
<include
android:id="@+id/first_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/item_header" />
<LinearLayout
android:id="@+id/first_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight=".47"
android:orientation="vertical">
<include
android:id="@+id/second_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/item_header" />
<LinearLayout
android:id="@+id/second_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="top" />
<include
android:id="@+id/third_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/item_header" />
<LinearLayout
android:id="@+id/third_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</LinearLayout>
</LinearLayout>
</com.handmark.pulltorefresh.library.PullToRefreshLoadMoreScrollView>
但是,我想重新排列它,看起来像:
有没有办法可以使用linearlayout重新排列相同的内容?或者我必须使用其他形式的布局,如relativelayout。我对此非常困惑。另外,想要在容器中包含标题(包含代码),有没有办法轻松实现这个目标?
谢谢!
稍微修改一下代码后,我将第二个标题和第二个布局移到顶部有一点成功,但是第一个标题位于第一个布局旁边而不是顶部,而第三个标题位于第三个。有一种方法可以修复它?我在这里附上了图片:
,代码如下:
<com.handmark.pulltorefresh.library.PullToRefreshLoadMoreScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/altercolor2"
android:layout_gravity="top">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:baselineAligned="true">
<LinearLayout
android:id="@+id/columnOne"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include
android:id="@+id/second_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/item_header" />
<LinearLayout
android:id="@+id/second_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:baselineAligned="true">
<include
android:id="@+id/first_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.50"
layout="@layout/item_dashboard_header" />
<LinearLayout
android:id="@+id/first_container"
android:layout_width="match_parent"
android:layout_weight="0.50"
android:layout_height="wrap_content"
android:orientation="vertical"
/>
<include
android:id="@+id/third_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.50"
layout="@layout/item_dashboard_header" />
<LinearLayout
android:id="@+id/third_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.50"
android:orientation="vertical" />
</LinearLayout>
</LinearLayout>
</com.handmark.pulltorefresh.library.PullToRefreshLoadMoreScrollView>
答案 0 :(得分:1)
这样的事情可以让你接近你想要的东西。对两个weight
使用相同数量的View
来占用相等的空间。这显然是layout
的伪代码,因为你似乎知道属性。
<LinearLayout
android:orientation="vertical"
...>
<SecondView
width="match_parent"
height="wrap_content"
.../>
<LinearLayout
width="match_parent"
height="wrap_content"
...>
<LinearLayout
width="0dp"
height="wrap_content"
layout_weight="1"
orientation="vertical">
<include
android:id="@+id/first_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.50"
layout="@layout/item_dashboard_header" />
<LinearLayout
android:id="@+id/first_container"
android:layout_width="match_parent"
android:layout_weight="0.50"
android:layout_height="wrap_content"
android:orientation="vertical"
/>
</LinearLayout>
<LinearLayout
width="0dp"
height="wrap_content"
layout_weight="1"
orientation="vertical">
<include
android:id="@+id/third_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.50"
layout="@layout/item_dashboard_header" />
<LinearLayout
android:id="@+id/third_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.50"
android:orientation="vertical" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
当您在水平weight
中使用LinearLayout
时,width
应为“0dp”而在纵向LinearLayout
中height
应为“0dp” 。
现在包装这些
<include
android:id="@+id/first_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.50"
layout="@layout/item_dashboard_header" />
<LinearLayout
android:id="@+id/first_container"
android:layout_width="match_parent"
android:layout_weight="0.50"
android:layout_height="wrap_content"
android:orientation="vertical"
/>
在纵横LinearLayout
中,正如我上面的ThirdView
和FirstView
一样。无论你需要什么顺序。
答案 1 :(得分:0)
使用RelativeLayout
,这非常简单 -
只需使用Android:Layout_AlignToRightOf="@id/LeftView"
和Android:Layout_AlignBelow="@id/TopView"
各种观点。
即:你的第二张照片的xmxl应为:
<RelativeLayout
android:id="@+id/Organize"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout //or Whatever type of view you want
android:id="@+id/Second"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<include.../>
</LinearLayout>
<LinearLayout //or Whatever type of view you want
android:id="@+id/First"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/Second">
<include.../>
</LinearLayout>
<LinearLayout //or Whatever type of view you want
android:id="@+id/Third"
androidlayout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/Second"
android:layout_ToRightOf="@id/First>
<include.../>
</LinearLayout>
</RelativeLayout>
在您的第一张图片和原始MXML中,您创建了一个LinearLayout
并将其设置为horizontal
(从左到右),然后再添加一个LinearLayout
(到它的权利。在第二个内部,你已经填充了两个项目,从上到下分布。使用RelativeLayout是个人偏好,但它可以控制你想让事物在屏幕上显示的位置更加直接。