2015-01-08 2 views
1

Я пытаюсь сделать следующий макет карты, который показывает, как изображение и все, что содержится в макете, установлены на фиксированную высоту, имитирующую горизонтальную карту реальной жизни.Android: настройка фиксированной высоты для макета?

enter image description here

То, что я сделал до сих пор:

Следующий XML является один элемент сетки я надуть в к GridView адаптера; который является ОДНОЙ из вышеупомянутых «карточек».

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_marginLeft="@dimen/feed_item_margin" 
     android:layout_marginRight="@dimen/feed_item_margin" 
     android:background="@drawable/bg_card" 
     android:orientation="vertical" 
     android:paddingBottom="@dimen/feed_item_padding_top_bottom" 
     android:paddingTop="@dimen/feed_item_padding_top_bottom" > 

     <ImageView 
      android:id="@+id/grid_banner" 
      android:layout_width="match_parent" 
      android:layout_height="fill_parent" 
      android:layout_alignParentTop="true" 
      android:focusable="false" 
      android:focusableInTouchMode="false" 
      android:background="@drawable/ic_launcher"/> 

     <TextView 
      android:id="@+id/bannerTitle" 
      android:layout_width="285dp" 
      android:layout_height="wrap_content" 
      android:layout_alignBottom="@id/grid_image" 
      android:layout_alignLeft="@id/grid_image" 
      android:layout_alignRight="@id/grid_image" 
      android:layout_alignTop="@id/grid_image" 
      android:layout_marginLeft="15sp" 
      android:layout_marginTop="300sp" 
      android:shadowColor="#000000" 
      android:shadowDx="1.0" 
      android:shadowDy="1.0" 
      android:shadowRadius="5.0" 
      android:textColor="#FFFFFF" 
      android:textSize="25sp" /> 
    </LinearLayout> 

</LinearLayout> 

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

+0

50dp все еще 50dp на любом устройстве, он выглядит небольшим, потому что экран больше. если вам нужны разные размеры для разных разрешений экрана, вам нужно использовать эти конкретные разрешения «values» и устанавливать определенные значения – tyczj

+0

Почему бы не попробовать использовать layoutWeight? Вы можете это сделать, и даже если вам нужно явно задать высоту элемента, вы можете сделать это как @tyczj и иметь папку значений для обработки различных устройств. – sparkyShorts

ответ

2

У вас есть четыре элемента, чтобы показать одну карту

  1. Изображение
  2. значок "V"
  3. Название (белый текст)
  4. Описание (серый текст)

Поскольку название и описание, перекрывающие изображение в некоторых точках, поэтому я предлагаю вам использовать RelativeLayout, а также установить

  1. высота карты во время выполнения в зависимости от ширины экрана устройства, чтобы она выглядела одинаково на всех устройствах.

  2. Используйте папку «Значения» для устройств другого типа и установите там размер в формате dp.

+0

У вас есть код примера, который я имею в виду при настройке значений размера, пожалуйста? :) и установив высоту во время выполнения, вы имеете в виду onCreate? – Pjayness

+1

Это было бы полезно http://stackoverflow.com/questions/22458468/set-layout-params-dynamically – Rohit5k2

Смежные вопросы