2012-05-04 4 views
1

У меня проблема с фоном элемента ListView, это больше, чем должно быть. Вот мой фон ресурс:Проблема с просмотром с фона фона

enter image description here

И это скриншот из моего устройства:

enter image description here

Планировка:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:background="@drawable/bg_nocar"> 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_marginTop="50dp" 
    android:layout_marginLeft="6.67dp"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/reservation" 
     android:textStyle="bold" 
     style="@style/reservation_text" /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/reservation.1" 
     style="@style/reservation_text" /> 
</LinearLayout> 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/reservation.selectclass" 
    style="@style/reservation_selectclass_text" 
    android:layout_marginTop="33.33dp" 
    android:layout_marginLeft="6.67dp" /> 
<ListView 
    android:id="@id/android:list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:divider="#00000000" 
    android:dividerHeight="0.67dp" /> 
</LinearLayout> 

Это мой деталь макета:

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/reservation_row" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/car_bg" 
android:orientation="horizontal"> 
    <LinearLayout 
     android:layout_width="93.33dp" 
     android:layout_height="98.67dp" 
     android:orientation="vertical" 
     android:layout_marginLeft="6.67dp" 
     android:layout_marginTop="13.33dp"> 
     <TextView 
      android:id="@+id/classname" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      style="@style/reservation_classname" /> 
     <TextView 
      android:id="@+id/name" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      style="@style/reservation_name" 
      android:layout_marginTop="16.67dp" /> 
    </LinearLayout> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="98.67dp" 
     android:orientation="vertical" 
     android:layout_marginLeft="6.67dp" 
     android:layout_marginTop="13.33dp"> 
     <ImageView 
      android:id="@+id/img" 
      android:layout_width="150dp" 
      android:layout_height="93.33dp" 
      android:layout_marginTop="6dp" /> 
     <TextView 
      android:id="@+id/price" 
      android:layout_width="30dp" 
      android:layout_height="20dp"/>  
     <TextView 
      android:id="@+id/item" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:visibility="gone" /> 
    </LinearLayout> 
</LinearLayout> 

Почему фон такой большой?

+0

Не найдено Запрашиваемый URL /bg_car.jpg не был найден на этом сервере. www.r-studio.com.pl – ByteMe

+0

Извините, теперь ссылка в порядке. – be4code

+0

Какое устройство, на котором вы тестируете макет? – Luksprog

ответ

1

Поскольку вы не хотите, чтобы ваше изображение масштабировалось до размеров элемента списка, вы не должны указывать его как фон.
Вместо этого вы можете это сделать. Пусть фон будет белым (поскольку ваш ресурс car_bg белый с одним логотипом). Затем макет ListView может выглядеть следующим образом:

<RelativeLayout> //background white 
    <ImageView> //Your car_bg with width and height set as wrap_content 
    <LinearLayout> //All the content that you previously had 
</RelativeLayout> 

Таким образом, ваш образ не масштабируются и остаются в качестве исходного. Тем не менее, вы должны теперь взять автомобиль разных размеров экрана самостоятельно. Для вашего ресурса car_bg у вас должны быть разные изображения densitiy.

+0

Не могли бы вы рассказать мне, почему фон масштабируется, даже если все элементы скрыты? Можно ли установить высоту элемента списка? Если я его установлю, он имеет разную высоту. – be4code

+0

По определению фон должен заполнить все пространство, которое он содержит. Поэтому изображение нужно масштабировать, если вы используете фоновый атрибут. Id предлагает использовать ImageView с RelativeLayout. Кроме того, я думаю, что было бы намного проще, если бы вы просто обрезали пробел с изображения и сохранили оранжевый логотип. Затем установите атрибут цвета фона как белый и используйте изображение для размещения оранжевого логотипа. – Urban

+0

Теперь car_bg не масштабируется, поэтому это хорошо, но элемент списка все еще слишком высок. – be4code

0

Попробуйте scaling the ImageView to keep its aspect ratio вместо того, чтобы устанавливать его высоту/ширину вручную. Скорее всего, ваш ImageView выглядит растянутым.

+0

Но с ImageView нет проблем с фоном. Изображения предназначены только для тестов. – be4code

+0

Охх, упс. Извините, я думал, что фон был «ImageView», но это не так. Хорошо, тогда как насчет установки корневого атрибута LinearLayout' android: layout_height = "fill_parent" на 'android: layout_height =" wrap_content "?? Это работает? –

+1

Кроме того, может быть лучше порезать весь белый цвет фона в фоновом изображении. Элементы «ListView» имеют белый фон по умолчанию, поэтому для «ListView» было бы неэффективно и не нужно устанавливать фоновое изображение png для каждого из своих элементов. Вместо этого вы можете относиться к оранжевой звезде как к «ImageView», как к фотографиям автомобилей. –

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