使视图的宽度至少与不同视图一样大

时间:2016-10-28 06:08:35

标签: android user-interface

我有两个视图在彼此之下。底视图至少需要与顶视图一样大。

我能够将底部视图限制为与顶部视图具有相同的大小,但它有可能使视图具有更大的宽度。

<?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"
                                             xmlns:tools="http://schemas.android.com/tools"
                                             android:layout_width="match_parent"
                                             android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Base textview"
        android:layout_marginStart="16dp"
        app:layout_constraintLeft_toLeftOf="parent"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="16dp"
        app:layout_constraintTop_toTopOf="parent"
        android:background="@color/module_color_blue"
        android:id="@+id/textView"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Smaller"
        app:layout_constraintTop_toBottomOf="@+id/textView"
        android:background="@color/red"
        app:layout_constraintLeft_toLeftOf="@+id/textView"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintRight_toRightOf="@+id/textView"/>

</android.support.constraint.ConstraintLayout>

另一方面,我能够使底部视图不受约束,但是视图可以比顶部视图小。

<?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"
                                             xmlns:tools="http://schemas.android.com/tools"
                                             android:layout_width="match_parent"
                                             android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Base textview"
        android:layout_marginStart="16dp"
        app:layout_constraintLeft_toLeftOf="parent"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="16dp"
        app:layout_constraintTop_toTopOf="parent"
        android:background="@color/module_color_blue"
        android:id="@+id/textView"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Much longer that top textview"
        app:layout_constraintTop_toBottomOf="@+id/textView"
        android:background="@color/red"
        app:layout_constraintLeft_toLeftOf="@+id/textView"
        />

</android.support.constraint.ConstraintLayout>

我可以使用现有布局实现这一目标,还是需要特殊布局?

情景A:

enter image description here

底部视图比顶部小,因此它们具有相同的宽度

情景B:

enter image description here

底部视图较大,顶部不受约束

4 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,那么您希望两个文本视图具有相同的宽度,并且拾取的宽度应该是较大的文本。在这种情况下,您可以使用TableLayout,如下所示:

<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
   >

<TextView
    android:text="TextView20938487494590786907809568659"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView3"
    android:background="#80123456"
 />

<TextView
    android:text="TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView2"
    android:background="#80723456"
     />

</TableLayout>

答案 1 :(得分:0)

将两个视图放在LinearLayout中,将LinearLayout宽度设为wrap_content,将顶视图设为match_parent,将底视图宽度设为wrap_content

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">
     <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="text1"/>
     <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="text2text2"/>
</LinearLayout>

答案 2 :(得分:0)

如果我理解你的问题,你可以尝试一下......

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/blue"
        android:text="Base TextView" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/red"
        android:text="Much Longer than top textView" />

</LinearLayout>

这里的技巧是将父布局宽度设置为特定宽度。 然后设置子项的宽度,即两个textView的宽度等于父布局的宽度...

PS:如果您希望将文本居中对齐,可以设置android:gravity =&#34; center_horizo​​ntal&#34;在你的textViews中。希望这会有所帮助。

答案 3 :(得分:0)

  

采用线性布局并指定您的观点。

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content" 
            android:text="This is TextView 1"
            android:background="@color/colorAccent"/>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="This is TextView 1"
            android:background="@color/colorPrimaryDark"/>

    </LinearLayout>

enter image description here