Bioaim
Bioaim

Reputation: 1016

Android ConstraintLayout width relative to item on the right

In iOS I can just set a space in between items, how can I achieve that in Android?

For example:

I want to have a TextView on the left of the screen, pinned on the left edge of the parent and a TextView on the right of the screen, pinned on the right edge of the parent, both in the same line.

Now I want the left TextView to have a width as wide as possible, but minimum 16dp space between the left TextView and the right TextView.

I hope it is understandable.

Upvotes: 0

Views: 4032

Answers (2)

Lewis McGeary
Lewis McGeary

Reputation: 7932

In terms of leaving space around a view, you'd be looking at using a margin (see here for the difference between padding and margin in Android layouts).

Specifically in ConstraintLayout it would look something like:

<?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/left_text_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@+id/right_text_view"
        android:layout_marginRight="16dp"
        android:text="left text" />

    <TextView
        android:id="@+id/right_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintRight_toRightOf="parent"
        android:text="right text" />

</android.support.constraint.ConstraintLayout>

Note the differences between the widths of the TextViews. The right one is wrap_content so it will vary it's size to fit it's text. The left one has width of 0dp, which in a ConstraintLayout means "match constraints". It needs a left and right constraint in order to work out what width to be, so we've given both.

We've also added a margin to the right of the first TextView to ensure a gap between views. Alternatively we could have added the 16dp as layout_marginLeft on the second TextView or split it 8dp each, depending on what makes most sense in the circumstances.

Upvotes: 7

Angelo Parente
Angelo Parente

Reputation: 818

If I understood what you want you can just use padding to add the space you need at the TextView. And if you use a RelativeLayout as parent layout, you can align to the right and left the TextView

Upvotes: 1

Related Questions