Android Gravity Left против правого отсечения - PullRequest
0 голосов
/ 17 февраля 2019

Я вижу разницу в отсечении между выровненным по левому краю и выровненным по правому краю TextView, которую я не понимаю.

Вот пример макета:

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

    <RelativeLayout
        android:id="@+id/fullLay"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="left">

        <RelativeLayout
            android:id="@+id/layout_message_content_container"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="15dp"
            android:background="@color/blue">

            <TextView android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="Hello World"/>
        </RelativeLayout>

        <TextView
            android:id="@+id/timestamp_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/layout_message_content_container"
            android:maxLines="1"
            android:layout_alignLeft="@+id/layout_message_content_container"
            android:text="This is a long sample label string"/>
    </RelativeLayout>

</LinearLayout>

Это дает мнемакет, который я ожидаю:

Left Alignment OK

Надпись под надписью находится ниже «Hello World».Но если я изменю это так, чтобы android: gravity = "right" и использовал layout_alignRight вместо layout_alignLeft, представление заголовка обрезается.

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

    <RelativeLayout
        android:id="@+id/fullLay"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right">

        <RelativeLayout
            android:id="@+id/layout_message_content_container"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="15dp"
            android:background="@color/blue">

            <TextView android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="Hello World"/>
        </RelativeLayout>

        <TextView
            android:id="@+id/timestamp_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/layout_message_content_container"
            android:maxLines="1"
            android:layout_alignRight="@+id/layout_message_content_container"
            android:text="This is a long sample label string"/>
    </RelativeLayout>

</LinearLayout>

И теперь представление заголовка обрезается до ширины представления вышеЭто.

Right-Aligned with Clipping

Как можно выровнять этот вид по правому краю над видом над ним, но не обрезать?

1 Ответ

0 голосов
/ 17 февраля 2019

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

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

    <RelativeLayout
        android:id="@+id/layout_message_content_container"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:background="@color/blue"
        android:padding="15dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World" />
    </RelativeLayout>

    <TextView
        android:id="@+id/timestamp_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:maxLines="1"
        android:text="This is a long sample label string" />

</LinearLayout>

Тот же пользовательский интерфейс с 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/blue"
        android:padding="15dp"
        android:text="Hello World"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/timestamp_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:text="This is a long sample label string"
        android:textAlignment="textEnd"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@id/hello_world" />

</android.support.constraint.ConstraintLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...