【问题标题】:ConstraintLayout take height of another view androidConstraintLayout 取另一个视图android的高度
【发布时间】:2017-08-24 06:28:14
【问题描述】:

我正在使用constraintLayout

我希望我的一个视图占据另一个视图的高度

我希望我的右边 Textview 占据左边 TextView 的高度

我的代码:

<TextView
            android:id="@+id/tv_cal_consumed"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:layout_marginTop="10dp"
            android:background="@drawable/button_selector_curved"
            android:drawableLeft="@drawable/ic_add"
            android:drawablePadding="5dp"
            android:gravity="start"
            android:padding="10dp"
            android:text="@string/cal_consumed"
            android:textColor="@color/white"
            android:textSize="@dimen/text_small"
            android:textStyle="normal"
            android:typeface="normal"
            app:layout_constraintHorizontal_chainStyle="spread_inside"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toLeftOf="@+id/tv_cal_burnt"
            app:layout_constraintTop_toBottomOf="@+id/con_info" />


        <TextView
            android:id="@+id/tv_cal_burnt"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"

            android:background="@drawable/button_selector_curved"
            android:drawableLeft="@drawable/ic_add"
            android:drawablePadding="5dp"
            android:gravity="start"
            android:padding="10dp"
            android:text="@string/cal_burnt"
            android:textColor="@color/white"
            android:textSize="@dimen/text_small"
            android:textStyle="normal"
            android:typeface="normal"
            app:layout_constraintTop_toTopOf="@+id/tv_cal_consumed"
            app:layout_constraintLeft_toRightOf="@+id/tv_cal_consumed"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintBottom_toBottomOf="@+id/tv_cal_consumed" />

当前输出:

【问题讨论】:

    标签: android android-constraintlayout


    【解决方案1】:

    tv_cal_burntlayout_height 更改为0dp(匹配约束)。这将导致TextView 增长到与其他视图相同的高度。您的顶部和底部约束已正确设置以使其工作。见this

    使用 0dp,相当于“MATCH_CONSTRAINT”

       <TextView
            android:id="@+id/tv_cal_burnt"
            android:layout_height="0dp"
       ...
    


    更新:如果您由于本地化等原因事先不知道哪个视图会更高/更宽,我建议您查看this answer 的类似问题。该答案中概述的概念适用于高度和宽度 - 只需将 app:layout_constraintWidth_min="wrap"app:layout_constraintHeight_min="wrap" 互换即可。 (截至 ConstraintLayout 2.0.4)

    【讨论】:

    • 这会导致本地化问题。如果在另一种语言中 tv_cal_burnt 大于 tv_cal_consumed,则会出现同样的问题。
    【解决方案2】:

    试试下面的代码:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <TextView
            android:id="@+id/tv_cal_consumed"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="#a7a7a7"
            android:drawableLeft="@android:drawable/ic_input_add"
            android:drawablePadding="5dp"
            android:gravity="start"
            android:layout_margin="5dp"
            app:layout_constraintHorizontal_weight=".1"
            android:layout_marginTop="10dp"
            android:padding="10dp"
            android:text="calorie Consumed"
            android:textColor="@color/white"
            android:textSize="15sp"
            android:textStyle="normal"
            android:typeface="normal"
            app:layout_constraintHorizontal_chainStyle="spread_inside"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toLeftOf="@+id/tv_cal_burnt" />
    
    
        <TextView
            android:id="@+id/tv_cal_burnt"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:background="#a7a7a7"
            android:layout_marginTop="5dp"
            app:layout_constraintHorizontal_weight=".1"
            android:drawableLeft="@android:drawable/ic_input_add"
            android:drawablePadding="5dp"
            android:gravity="start"
            android:padding="10dp"
            android:text="Calorie Burnt"
            android:layout_margin="10dp"
            android:textColor="@color/white"
            android:textSize="15sp"
            android:textStyle="normal"
            android:typeface="normal"
            app:layout_constraintBottom_toBottomOf="@+id/tv_cal_consumed"
            app:layout_constraintLeft_toRightOf="@+id/tv_cal_consumed"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="@+id/tv_cal_consumed" />
    
    </android.support.constraint.ConstraintLayout>
    

    如果你想以文本为中心使用android:gravity="center"这个android:gravity="start"的实例

    希望对你有帮助。

    在这里输出:

    【讨论】:

    • 问题是关于使高度等于而不是截断文本。
    • @karthikkolanji 试试这个让我知道,这两个文本视图的父布局是什么。
    • 约束布局
    • @karthikkolanji 嘿,你检查了吗。
    【解决方案3】:

    尝试文本视图的最小高度。

    android:minLines = "1"
    

    【讨论】:

      【解决方案4】:

      最简单的解决方案取决于您是否愿意假设左键总是更大。

      如果是这样,将右侧按钮的顶部限制在左侧按钮的顶部,将右侧按钮的底部限制在左侧按钮的底部;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-04
        • 1970-01-01
        • 2013-07-22
        • 1970-01-01
        • 1970-01-01
        • 2021-06-30
        • 1970-01-01
        相关资源
        最近更新 更多