ConstraintLayout выровнять текст прямо в TextView - PullRequest
0 голосов
/ 29 мая 2018

Как выровнять текст в TextView, когда он внутри ConstraintLayout?Я не могу использовать layout_width="match_parent.Пробовал это, не работает: (

android:gravity="start"
android:textAlignment="gravity"

Ответы [ 8 ]

0 голосов
/ 10 мая 2019

К сожалению, нам не хватает всего XML вашего макета, но давайте предположим, что у вас есть что-то вроде этого:

<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="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Something Important to align"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

Теперь, если вы создадите именно этот макет, TextView будет в центре.Это поведение ConstraintLayout по умолчанию, оно всегда пытается центрировать в нем представления, если вы устанавливаете ограничения таким образом.На это поведение могут влиять свойства app:layout_constraintHorizontal_bias и app:layout_constraintVertical_bias TextView.Значения по умолчанию для обоих 0,5, что вы можете перевести на 50%.Если вы установите их обоих на 0, вы увидите TextView в в верхнем левом углу .Если вы установите их обоих на 1, TextView окажется в в правом нижнем углу .Вы поняли, что таким образом вы можете расположить свой TextView или любой View в любом месте.

Свойства bias также описаны в официальной документации здесь .

Полностью рабочий пример TextView, выровненный по центру по вертикали и выровненный по горизонтали вправо:

<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="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Something Important to align"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.5" />

</android.support.constraint.ConstraintLayout>
0 голосов
/ 01 октября 2018
  1. Сделайте так, чтобы родительский элемент TextView совпадал с:

    android:layout_width="0dp"
    
  2. Затем определите свойство textAlignment:

    android:textAlignment="viewEnd"
    

Пример, выравнивание справа на языке слева направо:

    <TextView
     android:id="@+id/tv_item"
     style="@style/text_highlight_small_title"
     android:layout_width="0dp"
     android:layout_height="wrap_content"
     android:text="@string/my_text"
     android:textAlignment="viewStart"
     app:layout_constraintBottom_toBottomOf="parent"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintTop_toTopOf="parent"
     tools:text="Sample Text" />

Обратите внимание, что вы можете использовать различные значения для textAlignment, как определено в документации .

0 голосов
/ 31 января 2019

В общем, если у вас есть более одного TextView в одной строке, выровнять первый TextView по левому краю нетривиально.Я использовал Руководство для этой заливки, и оно отлично работает.Если вы удалите направляющую линию, она не будет работать.Вот XML:

<TextView
    android:id="@+id/textView1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="130dp"
    android:ellipsize="end"
    android:maxLines="1"
    android:text="first very long very long long long long long very long text"
    android:textAlignment="viewStart"
    app:layout_constraintEnd_toStartOf="@id/textView2"
    app:layout_constraintStart_toStartOf="@+id/guideline"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="130dp"
    android:text="second text"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<android.support.constraint.Guideline
    android:id="@+id/guideline"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_begin="0dp" />
0 голосов
/ 23 сентября 2018

Решение:

используйте этот код XML

<?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="match_parent">

    <TextView
        android:text="TextView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginLeft="16dp"
        android:layout_marginEnd="16dp"
        android:gravity="start"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginRight="16dp" />
</android.support.constraint.ConstraintLayout>

Надеюсь, это поможет.

0 голосов
/ 29 мая 2018

Попробуйте это:

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:gravity="right"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginLeft="16dp"
        android:layout_marginEnd="16dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginRight="16dp" />
0 голосов
/ 29 мая 2018

Используйте дизайн, потому что это намного проще, чем xml видеофайл

0 голосов
/ 29 мая 2018

используйте этот XML-код

<?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="match_parent">

    <TextView
        android:text="TextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginLeft="16dp"
        android:layout_marginEnd="16dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginRight="16dp" />
</android.support.constraint.ConstraintLayout>
0 голосов
/ 29 мая 2018

Попробуйте это:

<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"
    tools:context="com.example.YOURUSER.YOURPROJECT.YOURACTIVITY">

    <TextView
        android:id="@+id/TextView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...