使用wrap_content分割相对布局

时间:2018-07-10 23:18:26

标签: android android-layout android-constraintlayout

我有这样的RelativeLayout

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

在此版式内部,有一些TextView和其他内容,通过它们可以定义版式的高度,因为如上所示,它已设置为wrap_content

现在,我想在RelativeLayout中拥有两个共享空间(相对于宽度)但填充整个版式的视图。其背后的目的是,我想拥有两个onClickListener。换句话说:我想将布局分为两个视图(水平)彼此相邻。

我试图像这样将LinearLayout放入RelativeLayout中:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true">
    <TextView
        android:id="@+id/togoTrueTrigger"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:id="@+id/togoFalseTrigger"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
</LinearLayout>

它用RelativeLayout的全部,而一个TextView取左边的50%,另一个取右边的50%。那正是我想要的。 但是我也希望他们占据整个高度。

我不能做什么:将LinearLayout的高度设置为match_parent。这是不可能的,因为整个东西都在另一个布局中,这会相对于该布局调整高度。

编辑:这是我的新方法

<android.support.constraint.ConstraintLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:padding="15dp">

                        <TextView
                            android:id="@+id/togoTrue"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Pickup"
                            android:textAppearance="@style/itemConfiguration"
                            app:layout_constraintLeft_toLeftOf="parent"/>

                        <com.bhargavms.podslider.PodSlider
                            android:id="@+id/togoSwitch"
                            android:layout_width="75dp"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="10dp"
                            android:layout_marginRight="10dp"
                            app:numberOfPods="2"
                            app:selectedPodColor="@color/colorAccent"
                            app:mainSliderColor="@color/colorPrimary"
                            app:podColor="#ffffff"
                            android:layout_centerInParent="true"
                            app:layout_constraintLeft_toLeftOf="parent"
                            app:layout_constraintRight_toRightOf="parent"
                            app:layout_constraintTop_toTopOf="parent"
                            app:layout_constraintBottom_toBottomOf="parent"/>

                        <TextView
                            android:id="@+id/togoFalse"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Vor Ort"
                            android:textAppearance="@style/itemConfiguration"
                            app:layout_constraintRight_toRightOf="parent"/>


                        <View
                            android:id="@+id/togoTrueTrigger"
                            android:layout_width="0dp"
                            android:layout_height="0dp"
                            app:layout_constraintWidth_percent="0.5"
                            app:layout_constraintLeft_toLeftOf="parent"
                            app:layout_constraintTop_toTopOf="parent"
                            app:layout_constraintBottom_toBottomOf="parent"/>

                        <View
                            android:id="@+id/togoFalseTrigger"
                            android:layout_width="0dp"
                            android:layout_height="0dp"
                            app:layout_constraintWidth_percent="0.5"
                            app:layout_constraintRight_toRightOf="parent"
                            app:layout_constraintTop_toTopOf="parent"
                            app:layout_constraintBottom_toBottomOf="parent"/>

                    </android.support.constraint.ConstraintLayout>

不幸的是,这仍然行不通。

编辑: 这是我想要的草图。第一张图片是布局,第二张图片以蓝色和红色视图显示相同的布局。这些视图是我尝试创建的。

enter image description here

3 个答案:

答案 0 :(得分:1)

因此,在主布局内有三个视图,两个视图的宽度为50%。我相信这是您的答案:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/togoTrue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Pickup"
        android:textAppearance="@style/itemConfiguration"
        app:layout_constraintLeft_toLeftOf="parent" />

    <com.bhargavms.podslider.PodSlider
        android:id="@+id/togoSwitch"
        android:layout_width="75dp"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:mainSliderColor="@color/colorPrimary"
        app:numberOfPods="2"
        app:podColor="#ffffff"
        app:selectedPodColor="@color/colorAccent" />

    <TextView
        android:id="@+id/togoFalse"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Vor Ort"
        android:textAppearance="@style/itemConfiguration"
        app:layout_constraintRight_toRightOf="parent" />


    <View
        android:id="@+id/togoTrueTrigger"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#44ffff00"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintWidth_percent=".5" />

    <View
        android:id="@+id/togoFalseTrigger"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#4400ff00"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="1"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintWidth_percent=".5" />

</android.support.constraint.ConstraintLayout>

答案 1 :(得分:0)

尝试看看ConstraintLayout

尽管起初有点吓人,但它可以完成所有其他布局可以做的所有事情,甚至还有更多(包括您刚才使用“ match_constraint”提出的要求)。

它也是支持库的一部分,因此可以在较早的项目中使用。

答案 2 :(得分:0)

如果我对您的理解正确,那么您希望这两个Views是为了在它们上设置OnClickListener。这就是我的处理方式:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/togoTrue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Pickup"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@id/togoSwitch"
        app:layout_constraintTop_toTopOf="parent" />

    <com.bhargavms.podslider.PodSlider
        android:id="@+id/togoSwitch"
        android:layout_width="75dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        app:numberOfPods="2"
        app:selectedPodColor="@color/colorAccent"
        app:mainSliderColor="@color/colorPrimary"
        app:podColor="#ffffff"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toRightOf="@id/togoTrue"
        app:layout_constraintRight_toLeftOf="@id/togoFalse"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/togoFalse"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Vor Ort"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toRightOf="@id/togoSwitch"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <View
        android:id="@+id/togoTrueTrigger"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@id/togoFalseTrigger"
        app:layout_constraintTop_toTopOf="parent" />

    <View
        android:id="@+id/togoFalseTrigger"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toRightOf="@id/togoTrueTrigger"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>