Как правильно выровнять TextView в линейном макете?

Я пытаюсь заставить TextView, "tv_amount" оставаться в правой части экрана. Я пытался использовать android:gravity = "right", но это не сработало для меня. У кого-нибудь есть предложения?

Изображение эмулятора с этим кодом:

Как правильно выровнять TextView в линейном макете?

<?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 = "45dp"
    android:gravity = "center_vertical"
    android:orientation = "horizontal">

    <ImageView
        android:id = "@+id/iv_icon"
        android:layout_width = "40sp"
        android:layout_height = "40sp"
        android:background = "@drawable/circle_border"
        android:padding = "6sp"
        android:layout_marginLeft = "6dp"
        android:src = "@drawable/food"/>

    <TextView
        android:id = "@+id/tv_label"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:layout_weight = "1"
        android:layout_marginStart = "12dp"
        android:text = "Yummy Pizza"
        android:textSize = "20sp" />

    <TextView
        android:id = "@+id/tv_amount"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_marginEnd = "12dp"
        android:gravity = "end"
        android:text = "$25"
        android:textSize = "25sp" />

</LinearLayout>

Я ожидаю, что транзакция или «tv_amount» останутся правильными, чтобы конец числа оставался в правой части экрана.

Я пытался использовать:

android:layout_weight = "0"
android:layout_gravity = "end"
android:gravity = "right" 

но они явно не работают. Я новичок, когда дело доходит до разработки Android, и не могу найти ответы, которые помогли бы где-либо еще. Все они говорят использовать android:gravity или какую-то другую альтернативу. Может быть, в моем коде есть что-то, что не позволяет этого.

0
0
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Разделение содержимого на левое и правое приведет к тому, что свойства веса и гравитации будут работать. Посмотрите на этот макет ниже.

<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:id = "@+id/tv_title"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:gravity = "center"
        android:text = "Title"
        android:textSize = "20sp" />
<!--Separate layout aligned to the left, containing an image and a yummy pizza label. -->


    <LinearLayout
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:orientation = "horizontal">

        <LinearLayout
            android:layout_width = "0dp"
            android:layout_height = "wrap_content"
            android:layout_weight = "1"
            android:orientation = "horizontal">

            <ImageView
                android:id = "@+id/iv_icon"
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                />

            <TextView
                android:id = "@+id/tv_text_left"
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:text = "Text Left"
                android:textSize = "16sp" />

        </LinearLayout>
    <!--Display the pizza price on a separate label aligned to the right -->
        <TextView
            android:id = "@+id/tv_text_right"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:gravity = "right"
            android:text = "Text Right"
            android:layout_weight = "1"
            android:textSize = "16sp" />

    </LinearLayout>

</LinearLayout>

Это не совсем сработало. Он по-прежнему действует как макет ограничения, где правый текст «застревает» слева. Должен ли я попробовать использовать другой макет? Или что еще мне попробовать?

Adam Lynn 10.02.2023 03:28
Ответ принят как подходящий

Я тупой. Проблема была не в коде в моем индивидуальном коде макета представления ресайклера. Это было с моим Activity_main.xml. Я установил ширину recycler_view на «wrap_content», хотя она должна была быть «match_parent». Ошибка новичка.

Другие вопросы по теме