#android #android-layout #imageview
Вопрос:
У меня есть RelativeLayout
то, что в данный момент содержит ImageView
то, что я хотел бы выровнять в правом верхнем углу экрана, а затем еще ImageView
одно в левом верхнем углу. Однако на данный момент то, RelativeLayout
что предназначено для их хранения, по какой-то причине не выровнено по верхней части экрана.
У меня есть следующее:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#a6c"
android:padding="16dp"
android:gravity="bottom"
android:id="@ id/frontFragment"
>
<TextView
android:id="@ id/frontText"
style="?android:textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0"
android:duplicateParentState="true"
android:gravity="center"
android:textStyle="bold" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_gravity="top">
<ImageView
android:id="@ id/infoIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" issue here
android:src="@drawable/info" />
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="45dip"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@ id/frontDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="some value"
android:layout_alignParentBottom="true"/>
<TextView
android:id="@ id/frontCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="another value"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
</LinearLayout>
но результат выглядит следующим образом
Комментарии:
1. Если вы хотите расположить изображения рядом друг с другом, вы можете использовать сетку или сетку с количеством строк и столбцов
2. вы
LinearLayout
должныandroid:gravity="bottom"
использовать betterConstraintLayout
вместо LinearLayout и RelativeLayout, чтобы получить ваш подход3. Я думаю, что ConstraintLayout намного проще в использовании, чем RelativeLayout. Я знаю, что это не ответ на вопрос, но я думаю, что вам нужно попробовать. Google рекомендует это сделать.
4. Вверху у вас есть текстовое представление frontText.
5. В вашем информационном изображении src есть дополнительное место справа и слева. вы можете увидеть макет представления изображения, щелкнув по изображению, и вы зададите содержимое обертки как ширину, поэтому я считаю, что если вы установите правильный src изображения, он будет работать .в вашем коде нет ничего плохого.
Ответ №1:
Как указывалось в комментариях, с ConstraintLayout
помощью вы можете сделать это проще, не вкладывая макеты.
Как показано ниже, просто замените свой контент(значки/текст):
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
android:background="@color/colorPrimary">
<ImageView
android:id="@ id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/home_selected" />
<ImageView
android:id="@ id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_add" />
<TextView
android:id="@ id/frontDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginStart="8dp"
android:layout_marginBottom="8dp"
android:text="some value"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@ id/frontCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="another value"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Ниже приведен результат:
Комментарии:
1. просто хочу отметить, что в конце концов мне также пришлось перейти с app:srcccompat=»@drawable/ic_add» на android:src=»@drawable/ic_add», чтобы изображение действительно отображалось на устройстве при запуске.
Ответ №2:
Удалить android:гравитация=»снизу» из линейной компоновки
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#a6c"
android:padding="16dp"
android:gravity="bottom"
android:id="@ id/frontFragment"
>
Для :
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#a6c"
android:padding="16dp"
android:id="@ id/frontFragment"
>
Комментарии:
1. спасибо, на самом деле это одно из изменений, которые мне пришлось внести, но теперь нижние текстовые просмотры полностью исчезли.
2. можете ли вы опубликовать результат, который вы хотите. похоже, вы все еще новичок в том, как работают XML-макеты в Android studio. вероятно, вам не хватает некоторых ограничений, таких как «макет:вес».