RelativeLayout не обертывает содержимое по ширине на Android 6

#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