#android #android-layout #android-relativelayout
#Android #android-макет #android-relativelayout
Вопрос:
У меня есть 2 устройства: Asus Zenfone 2 (6.0.1) и Galaxy Note 3 (5.0). В моем приложении я делаю снимок, а на следующем экране я показываю его в ImageView и добавляю к нему некоторую информацию. Вот макет xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true"
android:background="@android:color/black">
<LinearLayout
android:id="@ id/preview_buttons"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="visible"
android:background="@android:color/black">
<TextView
android:id="@ id/tv_cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textColor="@android:color/white"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:textSize="16sp"
android:text="CANCEL"/>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"/>
<TextView
android:id="@ id/tv_accept"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textColor="@android:color/white"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:textSize="16sp"
android:text="ACCEPT"/>
</LinearLayout>
<RelativeLayout
android:id="@ id/preview_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:background="@android:color/holo_blue_bright"
android:layout_above="@id/preview_buttons">
<ImageView
android:id="@ id/image_preview"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
/>
<TextView
android:id="@ id/preview_top_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingRight="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:layout_alignRight="@id/image_preview"
android:layout_alignTop="@id/image_preview"
android:gravity="right"
android:background="@drawable/top_text_background"
android:textSize="16sp"
android:textColor="@android:color/white"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginBottom="8dp"
android:layout_alignLeft="@id/image_preview"
android:layout_alignBottom="@id/image_preview"
android:src="@drawable/ic_verified_grey600"/>
<TextView
android:id="@ id/preview_bottom_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingRight="16dp"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:layout_alignRight="@id/image_preview"
android:layout_alignBottom="@id/image_preview"
android:gravity="right"
android:background="@drawable/bottom_text_background"
android:textSize="16sp"
android:textColor="@android:color/white"/>
</RelativeLayout>
</RelativeLayout>
UPD. У меня проблема с RelativeLayout «preview_container»
Из этого макета я ожидаю, что его ширина будет переноситься, если ширина ImageView не заполняет весь экран и находится в центре экрана. И это хорошо работает на GN3, но на моем AZ2 я получаю пробел справа (нет репутации для вставки изображения, оно здесь http://i.imgur.com/cSujbAp.png )
UPD2. Что я ожидаю: RelativeLayout обернут правильно, поэтому я не вижу фона. Пример из моего GN3 здесь (http://i.imgur.com/vKGQq8r.jpg ). Прозрачный фон также не может помочь, потому что после этого мне нужно получить кэш рисования этого макета и работать с ним
Я знаю о проблеме с alignParent, но я не использую ее сейчас, и мои дополнительные просмотры размещены правильно. Пожалуйста, помогите мне, что не так?
Комментарии:
1. чтобы быть более ясным с вашим вопросом, можете ли вы поместить как ожидаемое изображение, так и изображение, которое вы получаете
2. @MansiSalvi Обновлено, посмотрите UPD2
Ответ №1:
<ImageView
android:id="@ id/image_preview"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
/>
android:layout_height=»match_parent» не должен быть match_parent .
Комментарии:
1. Это не помогло 🙁
Ответ №2:
У вас preview_top_text
установлена ширина match_parent
, поэтому это означает, что, поскольку ее контейнер совпадает с изображением, он будет растягиваться, чтобы содержать также textview, а не только imageview
.
Добавьте android:layout_centerHorizontal="true"
параметр в imageview
, и он должен быть центрирован.
Надеюсь, это помогло
ТОЧКА ОБНОВЛЕНИЯ 2
две возможности:
- измените размеры
TextViews
наwrap_content
- измените фон второго
relativelayout
наtransparent
Комментарии:
1. android:layout_centerHorizontal=»true»
2. @TeazMalker Я не понимаю, был ли это вопрос
3. Упс! Я хотел ответить, что это помогло с центрированием, спасибо, но теперь у меня есть границы как слева, так и справа. Изменения с помощью preview_top_text не помогли
4. @TeazMalker эта часть не была в вопросе, это ваша цель? вы не хотите видеть содержимое relativelayout, а только часть ниже? вы можете установить фон прозрачным 🙂
5. Обновлено, посмотрите на UPD2