在布局资源XML中,我有3个RelativeLayout(s),它们位于主RelativeLayout中。视图将垂直显示。这3个RelativeLayout()彼此相邻设置,我想让它们填满整个屏幕,无论屏幕大小是多少。我的布局视图:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/backg"
>
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="@dimen/top_mr_image"
android:src="@drawable/temp" />
<RelativeLayout
android:id="@+id/r1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_below="@+id/imageView1"
android:layout_marginLeft="10dp"
android:background="@drawable/r1bg"
android:layout_weight="1"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="@dimen/txt_mr_right"
android:layout_marginRight="@dimen/txt_mr_right"
android:layout_marginTop="39dp"
android:text="S"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@id/textView1"
android:layout_marginLeft="@dimen/txt_mr_right"
android:layout_marginRight="@dimen/txt_mr_right"
android:text="T"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/r2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignTop="@+id/r1"
android:layout_toRightOf="@+id/r1"
android:layout_weight="1" >
</RelativeLayout>
<RelativeLayout
android:id="@+id/r3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignTop="@+id/r2"
android:layout_toRightOf="@+id/r2"
android:layout_weight="1" >
</RelativeLayout>
我为每个relativeLayout设置了weight=1
和layout_width=0dp
,这个技术适用于按钮,我认为与relativeLayout相同,似乎我的想法是错误的。有什么想法吗?
UPD1:我添加了一张我想要的图片
答案 0 :(得分:24)
RelativeLayout
没有注意android:layout_weight
。 (这是LinearLayout.LayoutParams
的属性,但不是RelativeLayout.LayoutParams
的属性。)
您应该能够通过更简单的视图层次结构获得所需的布局。目前尚不清楚你要做什么,因为最后两个RelativeLayout
是空的。如果您需要纯粹的垂直组织,我建议您使用LinearLayout
代替RelativeLayout
。
编辑根据您的编辑,您看起来想要三个复合视图的水平布局,每个视图都可以点击。我认为以下内容可行:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!-- First column -->
<LinearLayout
android:id="@+id/firstColumn"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="..." />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="text 1"
. . . />
</LinearLayout>
<!-- Second column -->
<LinearLayout . . . >
. . .
</LinearLayout>
</LinearLayout>
如果按钮的内容不正确,您可以使用LinearLayout
替换第二级RelativeLayout
视图,如果这有助于更好地整理布局。
答案 1 :(得分:6)
RelativeLayouts不支持体重。如果要使用权重,则需要使用LinearLayout作为父容器。
答案 2 :(得分:0)
解决方案非常简单。我一直在寻找相对布局的重量分布。
对于所有这些情况来说,这是一个小技巧。
将LinearLayout与 android:orientation =“horizontal”
一起使用答案 3 :(得分:0)
您可以在Horizontally
中使用面向LinearLayout Manager
的{{1}},并将每个Recycler View
放在其RelativeLayout
的每个项目中。
链接:How to build a Horizontal ListView with RecyclerView?
如果您将Adapter
设置为固定的宽度和高度,即屏幕的大小,可以从RelativeLayouts
获得,则可以。
链接:Get Screen width and height
如果您的RelativeLayouts的内容不同,则可以使用DisplayMatrics
方法。
请参阅:How to create RecyclerView with multiple view type?
快乐编码:-)