2015-11-10 4 views
0

У меня есть экран в моем приложении с большим изображением в верхней части (заполнение ширины экрана) и некоторый текст и кнопки под ним в относительной компоновке.Установите максимальную высоту изображения в пропорции к размеру экрана

<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=".WelcomeScreenActivity" 
> 

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:adjustViewBounds="true" 
    android:id="@+id/imgFirstScreenImage" 
    android:layout_centerHorizontal="true" 
    android:src="@drawable/first_screen_image"/> 

<TextView 
    android:layout_width="200dp" 
    android:layout_height="wrap_content" 
    android:text="@string/first_screen_text" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:id="@+id/firstScreenText" 
    android:layout_below="@+id/imgFirstScreenImage" 
    android:layout_centerHorizontal="true" 
    android:gravity="center" /> 

Это работает отлично на новых телефонах, как Nexus 5 и 5е, а на Nexus 4 текста частично от нижней части экрана.

Я хочу, чтобы изображение можно было обрезать так, чтобы оно заполняло максимум 50% высоты экрана, чтобы другие элементы всегда отображались на экране, но только если размер экрана равен ниже определенного размера, поэтому то, что я ищу, - это своего рода резерв.

Я использую разные разрешения изображения в папках с выделенными папками, но в этом случае, похоже, этого недостаточно. Похоже, что Nexus 4 использует версию xhdpi. Я очень новичок в андроиде, поэтому я легко ошибаюсь или полностью смотрю в неправильном направлении.

+0

Я бы изучил использование LinearLayout с весами, что позволило бы установить вес каждого в 1/2 и 1/2 –

+0

Спасибо, я пробовал это, но я не хочу ограничьте размер изображения на более высоком экране до 50%, как раз на меньших экранах, где изображение подталкивает другие элементы снизу. Я редактировал вопрос, чтобы включить это. – Carasel

+0

Просто получите высоту экрана на пикселях и соответствующим образом настройте размер своего изображения, подумайте об этом: http://stackoverflow.com/questions/29956014/why-should-we-use-xml-layouts – Nanoc

ответ

0

Было бы более практичным, если вы можете определить определенный процент высоты для вашего экрана.

Вроде - 70% для изображения и 30% для отдыха. Вы можете легко достичь этого с помощью layout_weight и Linear layouts.

Но если вы фокусируясь на ваше требование, вы можете сделать следующее,

  1. Получить высоту устройства программно.
  2. Если высота устройства < определенного размера, то установите для изображения максимальную высоту программно.

Ex - ImageView высота максимальная высота = устройство/2

В противном случае оставить его как есть.

Это может сработать.