Я пытаюсь заставить TextView, "tv_amount" оставаться в правой части экрана. Я пытался использовать android:gravity = "right"
, но это не сработало для меня. У кого-нибудь есть предложения?
Изображение эмулятора с этим кодом:
<?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
или какую-то другую альтернативу. Может быть, в моем коде есть что-то, что не позволяет этого.
Попробуйте это так:
Разделение содержимого на левое и правое приведет к тому, что свойства веса и гравитации будут работать. Посмотрите на этот макет ниже.
<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>
Я тупой. Проблема была не в коде в моем индивидуальном коде макета представления ресайклера. Это было с моим Activity_main.xml. Я установил ширину recycler_view на «wrap_content», хотя она должна была быть «match_parent». Ошибка новичка.
Это не совсем сработало. Он по-прежнему действует как макет ограничения, где правый текст «застревает» слева. Должен ли я попробовать использовать другой макет? Или что еще мне попробовать?