Android 安卓:2个相对布局,分为半屏
我曾多次尝试绘制两个相对布局,水平对齐,分为半个屏幕 我用颜料设计图像,以便更好地解释我的意思Android 安卓:2个相对布局,分为半屏,android,android-layout,android-relativelayout,Android,Android Layout,Android Relativelayout,我曾多次尝试绘制两个相对布局,水平对齐,分为半个屏幕 我用颜料设计图像,以便更好地解释我的意思 有什么建议吗?我在你的图纸上看到了4个相对位置 如果你是指中间的两个将它们放在一个线性布局(水平方向)中,让它们都有一个匹配的宽度,并给出两个相对布局的权重:1</p>< P>,你可以把这2个相对变量放在一个具有水平方向的线性布局内,然后使用这两个相对值。这将线性布局分成两个相等的部分 <LinearLayout android:layout_width="match_parent"
有什么建议吗?我在你的图纸上看到了4个相对位置
如果你是指中间的两个将它们放在一个线性布局(水平方向)中,让它们都有一个匹配的宽度,并给出两个相对布局的权重:1</p>< P>,你可以把这2个相对变量放在一个具有水平方向的线性布局内,然后使用这两个相对值。这将线性布局分成两个相等的部分
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:baselineAligned="false">
<RelativeLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
</RelativeLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
</RelativeLayout>
</LinearLayout>
在不需要使用线性布局的情况下,完成相同任务的另一种方法是在父布局中间放置一个中心对齐的“垫片”,然后将其他元素对齐。如果将半宽度元素的宽度设置为与父元素匹配,但将其左右两侧对齐,则它们最终会收缩以适应
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.EqualWidthExample" >
<!-- An invisible view aligned to the center of the parent. Allows other
views to be arranged on either side -->
<View
android:id="@+id/centerShim"
android:layout_height="match_parent"
android:layout_width="0dp"
android:visibility="invisible"
android:layout_centerHorizontal="true"/>
<!--Set width to match_parent sets maximum width. alignParentLeft aligns
the left edge of this view with the left edge of its parent. toLeftOf
sets the right edge of this view to align with the left edge of the
given view. The result of all three settings is that this view will
always take up exactly half of the width of its parent, however wide
that may be. -->
<Button
android:id="@+id/btLeft"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/centerShim"
android:text="Left Button" />
<!--Same deal, but on the right -->
<Button
android:id="@+id/btRight"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_toRightOf="@+id/centerShim"
android:layout_below="@+id/tvLeft"
android:text="Right Button" />
</RelativeLayout>
现在,您可以使用PercentRelativeLayout轻松完成此操作
<android.support.percent.PercentRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="Button"
app:layout_widthPercent="50%"/>
<Button
android:id="@+id/button2"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/button"
android:text="Button 2"
app:layout_widthPercent="50%"/>
</android.support.percent.PercentRelativeLayout>
更新
您可以使用嵌套wieghts的非推荐结构
最好在centerShim
视图中设置高度android:layout\u height=“0dp”
。+5对于视图层次结构,这种方法比LinearLayout+layout\u weights更有效。同样,android:gravity=“center”完美地居中button@V.Kalyuzhnyu无论如何,一定要发布更好的版本,我相信它会比光速更快…)你的答案是正确的,但最好拒绝投资布局,因为他们要求对占用的空间进行多次重画。这是一个很好的答案。如果添加android:layout\u gravity=“center”
,则当您将其中一个内部布局中的可见性设置为GONE
时,剩余的可见布局将很好地水平居中。我不太担心如何使用布局权重
,我确信还有更多其他方面需要担心性能。我发现@KevBry的想法()更简单、更有效。太糟糕了,它错过了被接受的答案。你现在可以用a来做这类事情。
dependencies {
compile 'com.android.support:percent:25.3.1'
}
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:baselineAligned="false"
android:weightSum="5">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:layout_gravity="center">
<TextView
android:id="@+id/TopTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Top Text View"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"/>
</RelativeLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:weightSum="2"
android:layout_weight="4">
<RelativeLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin">
<TextView
android:id="@+id/LeftTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Left Text View"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin">
<TextView
android:id="@+id/RightTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Right Text View"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"/>
</RelativeLayout>
</LinearLayout>
</LinearLayout>