Что я хочу, так это то, что у меня может быть 1 ImageView слева, а рядом с изображением 2 текстовых изображения друг под другом. Я не могу получить второе текстовое представление под текстовым представлением.
<?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 = "horizontal"
android:layout_width = "match_parent"
android:layout_height = "wrap_content">
<ImageView
android:id = "@+id/displayImage"
android:layout_width = "67dp"
android:layout_height = "100dp"
android:layout_gravity = "left"
android:layout_weight = "1" />
<TextView
android:id = "@+id/textview_name"
android:layout_width = "40dp"
android:layout_height = "wrap_content"
android:layout_gravity = "top"
android:layout_weight = "2"
android:paddingLeft = "10dp"
android:paddingTop = "10dp"
android:paddingBottom = "3dp"
android:textColor = "@color/colorPrimaryDark"
android:textSize = "20sp"
android:textStyle = "bold" />
<TextView
android:id = "@+id/textview_description"
android:layout_width = "55dp"
android:layout_height = "wrap_content"
android:layout_gravity = "bottom"
android:layout_weight = "2"
android:gravity = "left"
android:paddingLeft = "10dp"
android:paddingTop = "10dp"
android:paddingBottom = "3dp"
android:textSize = "20sp" />
</LinearLayout>
Результат выглядит сейчас: Результат
Вы можете использовать что-то вроде ниже:
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:orientation = "horizontal">
<ImageView
android:id = "@+id/displayImage"
android:layout_width = "67dp"
android:layout_height = "100dp"
android:src = "@color/colorPrimaryDark" />
<LinearLayout
android:layout_width = "0dp"
android:layout_height = "wrap_content"
android:layout_gravity = "center"
android:layout_weight = "1"
android:orientation = "vertical">
<TextView
android:id = "@+id/textview_name"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:paddingLeft = "10dp"
android:paddingTop = "10dp"
android:paddingBottom = "3dp"
android:text = "Left text"
android:textColor = "@color/colorPrimaryDark"
android:textStyle = "bold" />
<TextView
android:id = "@+id/textview_description"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_gravity = "bottom"
android:paddingLeft = "10dp"
android:paddingTop = "10dp"
android:paddingBottom = "3dp"
android:text = "Right text" />
</LinearLayout>
</LinearLayout>
Вы можете вкладывать контейнеры, такие как LinearLayout, RelativeLayout, FrameLayout и т. д., друг в друга, чтобы создавать сложные макеты.
Кроме того, я бы посоветовал узнать, что делает каждый тег, погуглив их, прежде чем использовать их ненадлежащим образом где-либо внутри вашего макета. Мне потребовалось целых 5 минут, чтобы исправить ваш макет, потому что вы добавили layout_weight практически везде, где хотели!
Мне нужно посмотреть, в чем проблема и где вы пытаетесь применить маржу. Извините за поздний ответ, я не получил уведомление о вашем комментарии. Если у вас все еще есть эта проблема, не забудьте отметить меня, когда вы комментируете. @Хорошо справляться
Ориентация вашего линейного макета горизонтальна, поэтому вы не можете выровнять текстовые представления по вертикали, если не возьмете еще один линейный макет для двух текстовых представлений с вертикальной ориентацией. В противном случае вы можете сделать это с помощью одного относительного макета.
Вот структура
<LinearLayout> - horizontal orientation
<Imageview/>
<LinearLayout> - vertical orientation
<Textview/>
<Textview/>
</LinearLayout> - vertical orientation
</LinearLayout> - horizontal orientation.
Вы установили ориентацию линейного макета как горизонтальную. Это приведет к тому, что все дочерние элементы (в вашем случае ImageView, имя TextView и описание TextView) будут расположены горизонтально рядом друг с другом.
Есть много способов сделать это. 1 способ добиться этого - использовать RelativeLayout, а затем вы можете использовать
android:layout_toBottomOf = "@id/textview_name"
чтобы текстовое представление описания было ниже текстового представления имени.
Для просмотра изображения вы можете использовать свойство
android:layout_alignParentLeft = "true"
чтобы вид изображения придерживался левой границы. Пожалуйста, поэкспериментируйте с RelativeLayout, чтобы получить желаемый результат.
Пожалуйста, используйте эту лабораторию кода от Google, чтобы использовать ContraintLayout. https://codelabs.developers.google.com/codelabs/constraint-layout/index.html#0
У меня есть еще 1 вопрос: когда я добавляю marginTop, он меняет нижнее поле, а когда я набираю marginBottom, он все еще меняет нижнее поле. Почему я не могу изменить верхнее поле?