2015-08-27 2 views
0

У меня возникает проблема при изменении ориентации экрана. Когда телефоны в портретном режиме работают нормально, но когда я изменяю ориентацию в альбомном режиме, изображение просматривает нижнюю кнопку.android Imageview скрывает элементы ниже при изменении ориентации

Вот мой макеты XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" 
android:longClickable="false"> 


<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Your Inbox" 
    android:id="@+id/btn_inbox" 
    android:layout_centerHorizontal="true" /> 

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageView" 
    android:layout_below="@+id/btn_inbox" 
    android:scaleType="fitCenter" 
    android:adjustViewBounds="true" 
    android:src="@drawable/img_main" /> 

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Scan QR" 
    android:id="@+id/btn_qrscan" 
    android:layout_below="@+id/imageView" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentEnd="true" 
    android:enabled="false" /> 

ответ

1

Конечно, потому что изображение может имеет размер, который соответствует экран в портретном. Если вы хотите, чтобы просмотреть все, что вам нужно:

  • Уменьшить размер ImageView
  • Play со свойством «вес» компонентов в представлении
  • Добавить Scrollview, если вы хотите использовать a scroll
+0

вес свойство используется только для LinearLayout. Я попробовал, но если я использую фиксированный вес макета, он может работать на ландшафте, но не работает в портретном режиме, как должен. возможно, я должен изменить его с помощью кода при изменении ориентации? Какова наилучшая практика? спасибо – Mike

0

Его потому, что высота экрана в портретном режиме больше по сравнению с высотой экрана в ландшафтном режиме. Элементы не будут автоматически корректировать свои места по высоте экрана. Вы должны обрабатывать размещение представлений во всех ориентациях/устройствах/планшетах.

Ширина больше, когда устройство находится в ландшафтном режиме. Итак, попробуйте изменить положение просмотров, чтобы использовать ширину, когда высота меньше.

0

Пожалуйста, попробуйте это

<?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:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:longClickable="false" 
    android:orientation="vertical" 
    tools:context=".MainActivity"> 
    <Button 
     android:id="@+id/btn_inbox" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:text="Your Inbox" /> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:adjustViewBounds="true" 
     android:scaleType="fitCenter" 
     android:src="@drawable/background" /> 

    <Button 
     android:id="@+id/btn_qrscan" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:enabled="false" 
     android:text="Scan QR" /> 


</LinearLayout> 
+0

Спасибо за ваш ответ. я попробовал это, но затем, когда я перехожу из пейзажного в портретный режим, он все еще не отображается правильно, слишком много пробела. разве нет способа, чтобы я мог вместить все в экран, сохраняя при этом правильные пропорции? – Mike

+0

Я обновил новый xml. вы можете попробовать это с помощью imageview weight = 1 – Pratap

+0

создать тот же файл макета с тем же именем и поместить его в папку макета с теми же компонентами с ландшафтным дизайном – Pratap